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