>perl -e '
use Data::Alias;
my @local_vars; $#local_vars=5;
alias my ($a, $b, $c) = @local_vars;
$b=1;
'
Modification of a read-only value attempted at -e line 5.
####
> perl -e '
use Data::Alias;
my @local_vars=(undef,undef,undef);
alias my ($a, $b, $c) = @local_vars;
$b=1;
'
####
#!/usr/bin/perl -w
package mypackage;
use Data::Alias;
our $local_varnames = 'qw( $a $b $c )';
our $len_local_varnames;
{
# prefer-> $len_local_varnames= wantarray (eval"($local_varnames)"); OR
# $len_local_varnames= 0+eval"($local_varnames)";
$len_local_varname = eval "local @_=($local_varnames)";
}
printf "len_local_varnames=%d\n",$len_local_varnames;
####
#!/usr/bin/perl -w
package mypackage;
use Data::Alias;
our $local_varnames = 'qw( $a $b $c )';
our $len_local_varnames;
{ $len_local_varnames= eval "local @_=($local_varnames)" }
sub mysub {
my $this=shift;
my @localspace;
$#localspace = $len_local_varnames-1; # <-doesn't work to pre-allocate array
$this->{localvars}= \@localspace;
alias my ($a, $b, $c) = @localspace;
($a, $b, $c) = (1, 2, 3); # (fails because no space alloc'ed to localspace)
#both print wrong/bad values
printf "lsp[1]=%d\n",$localspace[1];
printf "b=%d\n",$this->{localvars}->[1];
}
&mysub;
####
my @localspace = eval "local @_=($local_varnames)";