sub double {
sub { \@_ }->($_[0], $_[0])
}
my $r = double my $v;
$v = 1;
@$r; # => ( 1, 1 );
$v = 2;
@$r; # => ( 2, 2 );
$r->[0] = 3;
@$r; # => ( 3, 3 );
####
switch_var $r, $v, my $w;
$w = 4;
@$r; # => ( 4, 4 );
##
##
sub switch_var { $_[0] = double $_[2] }
##
##
sub switch_var {
alias $_[1] = $_[2];
}
switch_var $r, $v, my $w;
$w = 4;
@$r; # => ( 3, 3 );
##
##
sub switch_var {
alias $_[0][0] = $_[2];
}
switch_var $r, $v, my $w;
$w = 4;
@$r; # => ( 4, 3 )
##
##
my $x;
my $fake_sub = fake_subroutine $x => sub { \@_ }->($x, $x);
my $r = call $fake_sub, my $y;
$y = 1;
@$r; # => ( 1, 1 );