Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options

Re: Check for existence of elements in a Hashref

by LanX (Bishop)
on May 03, 2013 at 23:36 UTC ( #1031974=note: print w/replies, xml ) Need Help??

in reply to Check for existence of elements in a Hashref

> Is this the correct way to check for element existence?

the correct way is to use exists on each element.

But if you wanna check multiple keys in one run, why not using keys to get them?


you could try this to apply hash-slices:

DB<230> sub tst{ my $href=shift; my %needed; @needed{qw/name unit quantity/}=(); delete @needed{ keys %$href }; print "Elements missing; ", keys %needed if %needed; } DB<231> tst({name=>1,bla=>2,unit=>3,quantity=>4}) DB<232> tst({name=>1,bla=>2,unit=>3}) Elements missing; quantity DB<233> tst({bla=>2,unit=>3}) Elements missing; quantityname

but this is certainly easier understood and maintained:

DB<234> sub tst{ my $href=shift; my @missing = grep { ! exists $href->{$_} } qw/name unit +quantity/; print "Elements missing: @missing" if @missing; } DB<235> tst({name=>1,bla=>2,unit=>3,quantity=>4}) DB<236> tst({name=>1,bla=>2,unit=>3}) Elements missing: quantity

Cheers Rolf

( addicted to the Perl Programming Language)

Replies are listed 'Best First'.
Re^2: Check for existence of elements in a Hashref
by quicoju (Initiate) on May 05, 2013 at 05:14 UTC

    Great answer, thanks!

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1031974]
[Spenser]: yes, I have mysql client libs installed.
[choroba]: You can also try DBD::MariaDB instead of MySQL
[choroba]: it's not on CPAN yet, unfortunately, so you have to install manually from github

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (7)
As of 2018-03-17 12:54 GMT
Find Nodes?
    Voting Booth?
    When I think of a mole I think of:

    Results (224 votes). Check out past polls.