perlquestion
curiousmonk
<p>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</p>
<p>Shouldn't the default scope be local?</p>
<p>case 1:</p>
<code>
$ 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
];
</code>
<p>case 2:</p>
<code>
$ perl -e 'use Data::Dumper;{my @a=(0..10);my $b=\@a} print Dumper $b'
$VAR1 = undef;
</code>
<p>case 3:</p>
<code>
$ perl -e 'use Data::Dumper;{my @a=(0..10);local $b=\@a} print Dumper $b'
$VAR1 = undef;
</code>
<p>case 4:</p>
<code>
$ 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
];
</code>