Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister

Re^7: Anagrams & Letter Banks

by dominick_t (Acolyte)
on Oct 27, 2017 at 21:55 UTC ( #1202206=note: print w/replies, xml ) Need Help??

in reply to Re^6: Anagrams & Letter Banks
in thread Anagrams & Letter Banks

Thank you, Laurent_R. If it is the case that grep outputs the values themselves that are true, how is it that the  next unless grep !/(.).*\1/, @list;line appears to be doing what I want it to in this:
for (sort keys %words) { my @list = sort @{$words{$_}}; next unless @list > 1; next unless grep !/(.).*\1/, @list; print "@list\n";
If grep outputs the words themselves, why is the "next unless" part working?

Replies are listed 'Best First'.
Re^8: Anagrams & Letter Banks
by Cristoforo (Curate) on Oct 27, 2017 at 22:23 UTC
    If grep outputs the words themselves, why is the "next unless" part working?
    In list context, grep will output the words, but in scalar context, (here forced by 'unless'), grep will return the number (0 1 2 ...) of times the condition it is testing is true.

    In this code, if grep tests a word composed of unique letters, the regex test will fail and applying the negation (!), forms a double negative which is equal to true. Here grep returns 1, (or 2 or more depending how many words are made up of unique letters in @list).

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1202206]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (7)
As of 2022-05-16 14:28 GMT
Find Nodes?
    Voting Booth?
    Do you prefer to work remotely?

    Results (63 votes). Check out past polls.