При запуске следующего кода печатаются имена файлов всех файлов ниже C: \ Test. Почему он не печатает только Hello
(n раз, в зависимости от того, сколько файлов обработано)?
Означает ли это, что я не могу положиться на shift
, чтобы надежно присвоить $_
? Представьте себе, что коллега реализует функцию wtf
и не знает, что она вызывается из подпрограммы File::Find
wanted .
Я запускаю этот код с Strawberry Perl 5.12
Редактировать: Этот код также не работает должным образом:
use strict;
use warnings;
wanted();
sub wanted{
wtf("Hello");
}
sub wtf {
shift;
print; #expecting Hello
}
Так что я полагаю, что я здесь совсем не на шоссе .. Это, очевидно, не имеет ничего общего с File :: Find, сейчас я ищу новый заголовок для этого вопроса. Вот мой оригинальный код:
use strict;
use warnings;
use File::Find;
find(\&wanted, "C:\\test");
sub wanted{
wtf("Hello");
}
sub wtf {
shift;
print; #expecting Hello
}