Вы совершенно правы в том, что у вас нет документов. Я выглядел довольно жестко, и я не могу найти никаких ссылок на то, что это особенное. Это является особенным, как вы обнаружили, и как продемонстрировано:
$ perl -MO=Deparse \
-E'opendir(my $dir, "."); while($_ = readdir($dir)) { say; }'
BEGIN {
$^H{'feature_say'} = q(1);
$^H{'feature_state'} = q(1);
$^H{'feature_switch'} = q(1);
}
opendir my $dir, '.';
while (defined($_ = readdir $dir)) {
say $_;
}
-e syntax OK
Просматривая источник, Perl_newWHILEOP
в op.c
специально имеет тесты для readdir
, glob
, readline
и each
... Хм, давайте немного покопаемся и посмотрим, когда readdir
был добавлен.
Небольшое копание с git
показывает, что так было, по крайней мере, с 1998 года, когда Гурусами Сарати внес соответствующие изменения в коммит 55d729e4
. Несмотря на то, что я не копался, чтобы посмотреть, в какие выпуски он вошел, я бы поспорил, что он будет не ниже 5.6.0 и выше. Я не могу найти упоминания об этом в дельтах.
Это может быть упомянуто в верблюжьей книге третьего издания, но я не проверял, чтобы узнать.
Я думаю, что патч здесь (или даже просто примечание к p5p), безусловно, приветствуется.
Пол