use strict; use warnings; use Data::Dump; $\="\n"; our $x='X'; our $y='Y'; our (@x,@y,@z); # return lvalue glob sub lg :lvalue { *x }; print '--- make $x alias of $y' ; lg=\$y; dd \*x; print '$x= ',"'$x'"; $y='YY'; print '$x= ',"'$x'"; print '--- make *x alias of *z' ; lg=*z; dd \*x; our $z='Z'; print '$x= ',"'$x'"; @z=qw(Z ZZ ZZZ); print '@x= ',"qw/@x/"; #### --- make $x alias of $y do { my $a = \*main::x; *{$a} = \"Y"; *{$a} = []; $a; } $x= 'Y' $x= 'YY' --- make *x alias of *z do { my $a = \*main::z; *{$a} = []; $a; } $x= 'Z' @x= qw/Z ZZ ZZZ/ #### DB<1> sub lg :lvalue { *x }; DB<2> $x="X" DB<3> $y="Y" DB<4> lg = *y DB<6> p $x Y DB<7> $x="XX" DB<9> p $y XX