curiousmonk has asked for the wisdom of the Perl Monks concerning the following question:
In the examples below, the variable the declaration of $b without my, local or our works like a global variable. I know this issue will be solved if strictures and warnings are enabled(One would be forced to declare a scope specifier) but without that, the expected behaviour should be that unless you explicitly declare it as 'our' the scope of the variable should end immediately after the curly brace
Shouldn't the default scope be local?
case 1:
$ perl -e 'use Data::Dumper;{my @a=(0..10);$b=\@a} print Dumper $b' $VAR1 = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ];
case 2:
$ perl -e 'use Data::Dumper;{my @a=(0..10);my $b=\@a} print Dumper $b' $VAR1 = undef;
case 3:
$ perl -e 'use Data::Dumper;{my @a=(0..10);local $b=\@a} print Dumper +$b' $VAR1 = undef;
case 4:
$ perl -e 'use Data::Dumper;{my @a=(0..10);our $b=\@a} print Dumper $b +' $VAR1 = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ];
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: More Scope related questions.
by BrowserUk (Patriarch) on Mar 29, 2013 at 04:47 UTC | |
Re: More Scope related questions.
by kcott (Archbishop) on Mar 29, 2013 at 06:40 UTC | |
by curiousmonk (Beadle) on Mar 29, 2013 at 07:22 UTC | |
Re: More Scope related questions.
by LanX (Saint) on Mar 29, 2013 at 04:44 UTC | |
Re: More Scope related questions.
by 2teez (Vicar) on Mar 29, 2013 at 04:57 UTC | |
Re: More Scope related questions.
by Anonymous Monk on Mar 29, 2013 at 05:10 UTC |
Back to
Seekers of Perl Wisdom