This is PerlMonks "Mobile"

Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  


in reply to Re: grep value in hash
in thread grep value in hash

Hi, can you please give me insight about the code

 grep { $_ eq '111' } values %hash

Replies are listed 'Best First'.
Re^3: grep value in hash
by eyepopslikeamosquito (Archbishop) on Dec 04, 2020 at 07:14 UTC

    The node you're responding to is over 14 years old! Sadly, its celebrated author (the famous davorg) hasn't visited us for more than two years and so is unlikely to respond. BTW, davorg, aka Dave Cross, is former head honcho of London.pm (around the time they sponsored a camel at London zoo), professional Perl trainer for over twenty years, and the author of at least four Perl books. Let's hope he visits us again soon.

    Meanwhile, I'll try to explain his masterful one-liner for you. You should read the immortal line:

    grep { $_ eq '111' } values %hash
    as a "pipeline" from right to left. The call to values %hash returns a list of all values in the hash (see values). The grep function evaluates the { $_ eq '111' } code block for each element of this list (locally setting $_ to each element), returning a list consisting of those elements for which the expression evaluated to true. That is, it returns a list of all values in %hash which have the exact value 111.

    Note that hashes have unique keys but their values are not unique, so the list returned by this expression may have more than one element; the above expression will only tell you how many times the value 111 appears in the hash but will not tell you the keys of the hash with that value -- for that, you would need to iterate through the keys of the hash instead, checking each value in turn (as the legend davorg did in his second code snippet, using the keys function).

    Now I've answered your question, you gotta tell me why you were asking a question about such an ancient node (I won't be able to sleep tonight not knowing).