sub name {
my $arg = ref $_[0] ? $_[0] : \do{my $anon = $_[0]};
# Do stuff.
$$arg =~ s/^un//;
return $$arg;
}
####
sub name {
our $arg;
local *arg = ref($_[0]) ? $_[0] : \do{my $anon = $_[0]};
# Do stuff.
$arg =~ s/^un//;
return $arg;
}
####
$i = $j = 'unchanged';
name(\$i);
print("i:$i\n"); # i:changed
$i = $j = 'unchanged';
$j = name($i);
print("i:$i, j:$j\n"); # i:unchanged, j:changed
$i = $j = 'unchanged';
$j = name(\$i);
print("i:$i, j:$j\n"); # i:changed, j:changed
####
sub name {
our $arg;
local *arg = defined wantarray ? \do{my $anon = $_[0]} : \$_[0];
# Do stuff.
$arg =~ s/^un//;
return $arg;
}
####
name($i); # In place
$j = name($i); # Not in place
sub test { name($_[0]) } # unknown!!!
sub test { name($_[0]) } test($i); # In place
sub test { name($_[0]) } $j = test($i); # Not in place