Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things

Re: Or Operator

by fruiture (Curate)
on Jul 30, 2004 at 23:04 UTC ( #378829=note: print w/replies, xml ) Need Help??

in reply to Or Operator

The magic term is "operator precedence", it determines the order of execution or your atomic expressions.

A = B or C; # as "=" has higher precedence than "or" it binds it's # arguments "tighter", so this is equivalent to (A = B) or C; # so your expression is a disjunction # which executes the left operand (A = B) # being an assignment, which returns B in the end # and if that's false, the disjunction (or) # returns C, which is irrelevant, because that's in void # context # but you want A = (B or C) # because that's an assignment, an assignment # evaluates the right operand first (B or C) # which itself is a disjunction again and works as described # above, returning B if true, otherwise C # and that is then assigned to A, which must be an lvalue # that means in Perl my $page = ( $cgi->param("page") or "login" ); # or by using the high-precedence-OR "||" my $page = $cgi->param("page") || "login"; # because "||" has higher precedence than "="

see perlop


Replies are listed 'Best First'.
Re^2: Or Operator
by rjahrman (Scribe) on Jul 30, 2004 at 23:47 UTC
    I have another similar line:
    $ftp = Net::FTP->new("ftp.$dom", Debug => 0) or $loginerror = "Error message.";

    Should this work like I think it does?

      If you think it will set $ftp to the result of the new method call, and if that was false set $longin error, it will.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://378829]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (2)
As of 2018-07-22 05:36 GMT
Find Nodes?
    Voting Booth?
    It has been suggested to rename Perl 6 in order to boost its marketing potential. Which name would you prefer?

    Results (452 votes). Check out past polls.