in reply to I'm confused with Bitwise Operators

Am I using && correctly?

Consider   $_ =~ /A/ && /B/; and think about whether it is equivalent to   /A/ && /B/The answer depends on the precedence of =~ vs. &&

Unclear on the precedence? There's an operator precedence table in perlop.

Replies are listed 'Best First'.
Re: Re: I'm confused with Bitwise Operators
by mephit (Scribe) on Jun 07, 2002 at 21:51 UTC
    Something else to consider: "distribution" (or lack thereof) of the binding operator. Note that $_ =~ (/A/ && /B/) is not equivalent to ($_ =~ /A/) && ($_ =~ /B/). The latter is what you would want.

    Regarding the original poster's code:

    $count++ if $_ =~ /\b$dst[0]\b/ && /\b$service[ +0]\b/;
    This works only because $_ is being tested. Taking precedence into consideration (and the fact that m// works on $_ by default), this code is equivalent to
    ($_ =~ /\b$dst[0]\b/) && ($_ =~ /\b$service[+0]\b/);
    If the data were in any other variable ($var, for example), and one just replaced $_ with $var in the OP's code, it would be equivalent to
    ($var =~ /\b$dst[0]\b/) && ($_ =~ /\b$service[+0]\b/);
    which isn't What You Want.

    Just my observations. HTH.

    --

    There are 10 kinds of people -- those that understand binary, and those that don't.