my($ret) ||= foo();
####
1. my ($ret); # Create a scalar variable called $ret
2. $ret ||= foo() # If $ret is undefined or zero, assign it to foo()
####
my($ret) = $ret || foo();
####
use strict;
use warnings;
my $x = $x || 5;
print "Now x = $x\n";
####
Now x = 5
####
Global symbol "$x" requires explicit package name at test.pl line 5.
Execution of test.pl aborted due to compilation errors.
####
use strict;
use warnings;
my $y = 7;
my $x;
$x = $x || $y;
print "Now x = $x\n";
####
use strict;
use warnings;
my $y = 7;
my $x;
$x ||= $y;
print "Now x = $x\n";
####
Now x = 7