Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Re: How to compare an empty key with another empty key in associative array

by 2teez (Priest)
on Oct 24, 2012 at 12:58 UTC ( #1000630=note: print w/replies, xml ) Need Help??

in reply to How to compare an empty key with another empty key in associative array

Hi nandymamith,

  • $a = ''; $b = {};
    You really don't want to use $a and $b which are aliases for the two operands being compared in a sortsub.
  • That been said, $a and $b in above are two different things in perl. While $a is an empty scalar variable, $b is a reference to an anonymous hash, created using curly brackets which is empty in this case

  • However, in this case, you can compare these, printing what you want like so:
    use warnings; use strict; my $empty_str = q{}; my $empty_hash_ref = { q{} => q{}, }; for ( keys %$empty_hash_ref ) { $empty_str eq $_ ? print "PASS" : print "FAIL"; ## print PASS } ## use smartmarch ~~ $empty_str ~~ $empty_hash_ref ? print "PASS" : print "FAIL"; ## print +PASS
  • Note however, that iterating through the hash comparing either the keys or values of the hash with the empty scalar variable, when the hash is empty ( with no variable atall) will print nothing, but using the smart match ~~ Operator will print "FAIL"
  • .
    my $empty_str = q{}; my $empty_hash_ref = {}; ## why? for (keys %$empty_hash_ref){ $empty_str eq $_? print "PASS": print "FAIL"; # print nothing } $empty_str~~$empty_hash_ref?print "PASS": print "FAIL"; # print FAI +L

Hope this helps

If you tell me, I'll forget.
If you show me, I'll remember.
if you involve me, I'll understand.
--- Author unknown to me

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1000630]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (7)
As of 2017-10-19 22:39 GMT
Find Nodes?
    Voting Booth?
    My fridge is mostly full of:

    Results (258 votes). Check out past polls.