Win8 Strawberry 5.8.9.5 (32) Wed 10/28/2020 15:06:58
C:\@Work\Perl\monks
>perl -Mstrict -Mwarnings
my $x; # undefined/false
my $y = 'default string';
my $side;
if (not $x) { $side = $y; } # true clause has side effect
# $side = $y unless $x; # a more terse alternative
printf "side effect '%s' logical-or '%s' ternary '%s' \n",
$side, ($x || $y), $x ? $x : $y;
^Z
side effect 'default string' logical-or 'default string' ternary 'default string'
####
sub func {
...
...
if ($x) { foo(); bar(); } else { fee(); fie(); }
}
##
##
Win8 Strawberry 5.8.9.5 (32) Wed 10/28/2020 22:49:24
C:\@Work\Perl\monks
>perl -Mstrict -Mwarnings
printf "'%s' returned from true clause \n", func(1);
printf "'%s' returned from false clause \n", func();
sub func {
my $x = shift;
printf "x is %-7s", $x ? 'true' : 'false';
if ($x) { foo(); bar(); } else { fee(); fie(); }
}
sub foo { return 'from ' . (caller 0)[3]; }
sub bar { return 'from ' . (caller 0)[3]; }
sub fee { return 'from ' . (caller 0)[3]; }
sub fie { return 'from ' . (caller 0)[3]; }
^Z
x is true 'from main::bar' returned from true clause
x is false 'from main::fie' returned from false clause