The unwisdom of your beguilement with package globals may be demonstrated by the following code. Can you explain the difference between the outputs of the two loops?
c:\@Work\Perl\monks>perl -wMstrict -e
"for ($loop::i = 0; $loop::i < 3; $loop::i++) {
clust($loop::i)
}
print qq{\n};
;;
for (my $i = 0; $i < 3; $i++) {
clust2($i);
}
;;
;;
sub clust {
my ($n) = @_;
;;
for ($loop::i = 0; $loop::i < 3; $loop::i++) {
my $m = $n * $loop::i;
print qq{= $m };
}
print qq{\n};
}
;;
sub clust2 {
my ($n) = @_;
;;
for (my $i = 0; $i < 3; $i++) {
my $m = $n * $i;
print qq{- $m };
}
print qq{\n};
}
"
= 0 = 0 = 0
- 0 - 0 - 0
- 0 - 1 - 2
- 0 - 2 - 4
Global data is, IMHO, always problematic. If you are looking for up-to-date on-line general introductory tutorials, I would suggest perlintro, perhaps followed by chromatic's freely downloadable Modern Perl.
|