Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW

Re^6: Anagrams & Letter Banks

by Laurent_R (Canon)
on Oct 27, 2017 at 21:50 UTC ( #1202205=note: print w/replies, xml ) Need Help??

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

Although they are similar, Unix shell (sh, csh, tcsh, bash, etc.) grep and Perl grep are not exactly the same.

In Perl, grep takes a list or array of values as input, and outputs those for which the grep command returns true.

Replies are listed 'Best First'.
Re^7: Anagrams & Letter Banks
by dominick_t (Acolyte) on Oct 27, 2017 at 21:55 UTC
    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?
      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://1202205]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (2)
As of 2022-07-07 04:52 GMT
Find Nodes?
    Voting Booth?

    No recent polls found