http://qs321.pair.com?node_id=772373


in reply to Re: comparing two array
in thread comparing two array

Shouldn't it be

print exists $h{$elem} ? "Yes" : "No";
the second example?

Replies are listed 'Best First'.
Re^3: comparing two array
by JavaFan (Canon) on Jun 17, 2009 at 12:42 UTC
    Considering all the values in %h are 1, it doesn't make any difference whether you use exists $h{$elem}, defined $h{$elem} or $h{$elem}.
Re^3: comparing two array
by citromatik (Curate) on Jun 17, 2009 at 12:54 UTC

    In this case...

    print defined $h{$elem} ? "Yes" : "No"; print exists $h{$elem} ? "Yes" : "No"; print $h{$elem} ? "Yes" : "No";

    Are all equivalent (give the same result). exists returns true if the specified element in the hash has ever been initialized, even if its current value is undefined. In this case, all elements has been initialized to 1. If you undefine one element of the hash, for example undef $h{$elem}, then $h{$elem} still exists, but its value is undef

    citromatik