while( readdir $dir ){}
теперь работает намного больше как while( readline $file ){}
.
perl -MO=Deparse -e'while( readline $f ){}'
while (defined($_ = <$f>)) {
();
}
<$f>
совпадает с readline $f
Так обрабатывали версии Perl до v5.11.2 while( readdir $dir ){}
perl-5.10 -MO=Deparse -e'while( readdir $d ){}'
while (readdir $d) {
();
}
Стоит отметить, что вышеперечисленное не будет работать правильно, если есть файл или каталог с именем 0
. Который не имеет большого значения, так как он все равно ничего не делает.
В Perl версии 5.11.2 был добавлен патч, который привел его в соответствие с обработкой while( readline $file ){...}
.
perl-5.12.0 -MO=Deparse -e'while( readdir $d ){}'
while (defined($_ = readdir $d)) {
();
}
Я хотел бы отметить, что I был тем, кто предоставил этот патч. Это было первое, что я пытался исправить в ядре Perl. Так что это был также первый патч, который я написал, который вошел в Perl.