Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re^6: Variable assignment error checking

by hdb (Monsignor)
on Dec 15, 2013 at 10:20 UTC ( [id://1067219]=note: print w/replies, xml ) Need Help??


in reply to Re^5: Variable assignment error checking
in thread Variable assignment error checking

It is not! In this expression:

$var = func($var) || $var;

the return value of func($var) will be assigned to $var if func($var) is true, otherwise the value of $var. In this expression

$var ||= func( $var );

the return value of func($var) will be assigned to $var if $var is false.

Completely different logic!

The expression $var ||= func( $var ); is shorthand for $var = $var || func( $var );. Can you spot the difference?

Replies are listed 'Best First'.
Re^7: Variable assignment error checking
by Anonymous Monk on Dec 15, 2013 at 10:36 UTC
    $var = $var || func( $var ); $var = func( $var ) || $var;
    They're certainly logically equivalent if we disregard the short-circuiting nature of operators. (Though the mathematics branch of logic generally deals with no other return values than true and false...)

      As you say, only if we only worry about true or false...

      my $var = 5; sub func { 10 }; print $var || func($var), "\n"; print func($var) || $var, "\n";

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others exploiting the Monastery: (6)
As of 2024-04-19 11:04 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found