diff --git a/perlito5.pl b/perlito5.pl index e5ccc4c4d..ee5b13eb7 100644 --- a/perlito5.pl +++ b/perlito5.pl @@ -4379,14 +4379,14 @@ sub Perlito5::Grammar::Scope::lookup_variable { $var->{'namespace'} && return $var; $var->{'_decl'} && return $var; $var->{'sigil'} eq '&' && return $var; + my $look = lookup_variable_inner($var, $scope); + $look && return $look; my $c = substr($var->{'name'}, 0, 1); if ($Special_var{$var->{'name'}} || $c lt 'A' || ($c gt 'Z' && $c lt 'a') || $c gt 'z') { $var->{'_decl'} = 'our'; $var->{'_namespace'} = 'main'; return $var } - my $look = lookup_variable_inner($var, $scope); - $look && return $look; if ($var->{'sigil'} eq '$' && ($var->{'name'} eq 'a' || $var->{'name'} eq 'b')) { $var->{'_decl'} = 'our'; $var->{'_namespace'} = $Perlito5::PKG_NAME; diff --git a/src5/lib/Perlito5/Grammar/Scope.pm b/src5/lib/Perlito5/Grammar/Scope.pm index 040a855ab..a278e751d 100644 --- a/src5/lib/Perlito5/Grammar/Scope.pm +++ b/src5/lib/Perlito5/Grammar/Scope.pm @@ -42,6 +42,9 @@ sub lookup_variable { return $var if $var->{_decl}; # predeclared variable return $var if $var->{sigil} eq '&'; # &sub - TODO + my $look = lookup_variable_inner($var, $scope); + return $look if $look; + my $c = substr($var->{name}, 0, 1); if ( $Special_var{ $var->{name} } || $c lt 'A' || ($c gt 'Z' && $c lt 'a') || $c gt 'z') { # special variable @@ -50,9 +53,6 @@ sub lookup_variable { return $var; } - my $look = lookup_variable_inner($var, $scope); - return $look if $look; - if ( $var->{sigil} eq '$' && ( $var->{name} eq 'a' || $var->{name} eq 'b' ) ) { # special variables $a and $b $var->{_decl} = 'our';