Сегодня я наткнулся на что-то в 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 уже объявлено глобально).