#!perl -l
my $code = sub { wantarray ? 1 : 0 };
sub wrapper {
# ... later
return wantarray ? &$code : scalar &$code;
}
print wrapper; # 1
print scalar wrapper; # 0
####
#!perl -l
my $code = sub { wantarray ? 1 : 0 };
sub wrapper {
my @r = wantarray ? &$code : scalar &$code;
# ... later
# Convert the array to a list to alter the
# behaviour when assigning to a scalar.
return @r[0..$#r];
}
print wrapper; # 1
print scalar wrapper; # 0
####
@r = &{ sub { return (4, 5, 6); } }; # 4, 5, 6
@r = &{ sub { my @r = (4, 5, 6); return @r; } }; # 4, 5, 6
@r = &{ sub { my @r = (4, 5, 6); return @r[0..$#r]; } }; # 4, 5, 6
$r = &{ sub { return (4, 5, 6); } }; # 6
$r = &{ sub { my @r = (4, 5, 6); return @r; } }; # 3
$r = &{ sub { my @r = (4, 5, 6); return @r[0..$#r]; } }; # 6
####
#!perl -l
my $code = sub { wantarray ? 1 : 0 };
sub wrapper {
# ... later
goto &$code;
}
print wrapper; # 1
print scalar wrapper; # 0