in reply to Re: $1 trap
in thread $1 trap

sub chg { $_ [0] =~ $_ [1] && $1 ? "yes\n" : "no\n"; }

Isn't the && $1 redundant here? or am I missing something out?


He who asks will be a fool for five minutes, but he who doesn't ask will remain a fool for life.

Chady | http://chady.net/

Replies are listed 'Best First'.
Re3: $1 trap
by bbfu (Curate) on Aug 10, 2003 at 16:37 UTC

    The OP's code was actually returning "yes" if $1 contained a true value. So, the following would've returned "no":

    chg("w0rd", qr/(\d)/); # that's a zero, not capital O

    bbfu
    Black flowers blossom
    Fearless on my breath

      NO.

      This would return "yes", because the regex will match, and thus will return true, even if there is no parens in the regex.

      That's why this works:
      $_ = "something blah blah"; if (/something/) { print "Ok"; }

      He who asks will be a fool for five minutes, but he who doesn't ask will remain a fool for life.

      Chady | http://chady.net/
        NO. This would return "no", because he's not only comparing the
        result of the regex, but also the value of the submatch:

        "w0rd" =~ /(\d)/ && $1 ? print"Yes": print"no";

        The regex matches, so $1 becomes 0. This makes the condition:

        (true) && 0 ? print"Yes": print"no";

        Which evaluates to false.