Сегодня я наткнулся на что-то в Perl, о котором я не знал: он "локализует" переменную, которой присвоены элементы перечисленного списка.
Это, конечно же, задокументировано в документации Perl, однако я не смог ее запомнить или прочитать.
Следующий сценарий демонстрирует, что я имею в виду:
use warnings;
use strict;
my $g = 99;
foreach $g (1..5) {
p($g);
}
sub p {
my $l = shift;
printf ("%2d %2d\n", $g, $l);
}
Печать сценария
99 1
99 2
99 3
99 4
99 5
потому что $g
"локализовано" в цикле foreach
.
Насколько я могу судить, нет никакой разницы, если бы я добавил my
к $g
в цикл foreach:
foreach my $g (1..5) {
На самом деле, я закончил это, потому что я чувствую, что он дает понять, что переменная является локальной для цикла.
Теперь мой вопрос: есть ли сценарий, в котором мое использование my
имеет значение (учитывая, что $g
уже объявлено глобально).