in reply to How do I check to see if a value in a hash is equal to something?

One way would be by inverting the hash and looking things up by value, as described in perlman:perlfaq4 (see How do I look up a hash element by value?).

Another way, of you are only interested in knowing if the value is in the hash, without knowing the key, could be:

$is_in_hash=grep /^Superman$/,values(%hash);
This is not particularly space efficient if the hash is large. See also the second solution suggested in the FAQ mentioned above.

--ZZamboni

  • Comment on Re: How do I check to see if a value in a hash is equal to something?
  • Download Code

Replies are listed 'Best First'.
RE: Answer: How do I check to see if a value in a hash is equal to something?
by merlyn (Sage) on May 23, 2000 at 19:47 UTC
    It has been said:
    Another way, of you are only interested in knowing if the value is in the hash, without knowing the key, could be:
    $is_in_hash=grep /^Superman$/,values(%hash);
    This is not particularly space efficient if the hash is large. See also the second solution suggested in the FAQ mentioned above.
    Rather than using a regular expression, just use an ordinary expression:
    $is_in_hash = 0 < grep $_ eq "Superman", values %hash;

    -- Randal L. Schwartz, Perl hacker