On Sun, Jan 15, 2017 at 12:45:41PM -0800, al...@myfastmail.com wrote:
> Hi
> 
> On Sun, Jan 15, 2017, at 12:23 PM, Илья Рассадин wrote:
> > I think, you can use this aproach
> 
> If I use either of those
> 
> 
>       sub modrec {
> -                     my %args = %{ shift @_ };
> +                     my ($args) = @_;
> 
> 30                    my $fn = $args{FN};
>                       my $ar = $args{AR};
>                       my $ad = $args{AD};
>                       my @dr = @{$args{DR}};
> 
>                       return;
>               }
> 
> or
> 
>       sub modrec {
> -                     my %args     = %{ shift @_ };
> +                     my $args = shift @_;
> 
> 30                    my $fn = $args{FN};
>                       my $ar = $args{AR};
>                       my $ad = $args{AD};
>                       my @dr = @{$args{DR}};
> 
>                       return;
>               }

Naming multiple variables with the same name like you did ($args, %args) is a
bad idea.  because when you want to access the value of the hash %args
($args{FN}) you are accessing in reality what was shifted in the scalar $args 
and not the hash %args
because perl use simbolic reference.
here is a link that explain that

https://perlmaven.com/symbolic-reference-in-perl

> 
> the script won't even execute.  Both give the same error
> 
>       perl /home/aj/test.pl
>               Global symbol "%args" requires explicit package name at 
> /home/aj/test.pl line 30.
>               Global symbol "%args" requires explicit package name at 
> /home/aj/test.pl line 31.
>               Global symbol "%args" requires explicit package name at 
> /home/aj/test.pl line 32.
>               Global symbol "%args" requires explicit package name at 
> /home/aj/test.pl line 33.
>               Execution of /home/aj/test.pl aborted due to compilation errors.
> 
> Which is weird since after I make those changes I'm not even using "%args" 
> anymore.
> 
> AJ
> 
> --
> To unsubscribe, e-mail: beginners-unsubscr...@perl.org
> For additional commands, e-mail: beginners-h...@perl.org
> http://learn.perl.org/
> 
> 

-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to