in reply to Surely @a is local to sub load?

You can get the same results without return:
sub load { my @a unless @n; push @a, @n; @a }

Now read the note in Statement Modifiers:

> The behaviour of a my, state, or our modified with a statement modifier conditional or loop construct (for example, my $x if ... ) is undefined.

($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,

Replies are listed 'Best First'.
Re^2: Surely @a is local to sub load?
by ikegami (Patriarch) on Jun 27, 2016 at 18:30 UTC

    Don't do that. As you mentioned, my @a unless @n; is officially undefined behaviour. Instead, use

    { my @a; sub load { push @a, @n; @a } }
    or
    use feature qw( state ); sub load { state $a = []; push @$a, @n; @$a }
      > Don't do that.

      That was my point. I should have made myself clearer.

      ($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,
Re^2: Surely @a is local to sub load?
by philiprbrenan (Monk) on Jun 27, 2016 at 01:17 UTC
    Thanks!