У меня было то же беспокойство, когда я начал использовать ключевое слово var .
Однако я привыкал к нему со временем и не собирающийся возвращаться к явным типам переменных. compiler\intellisense Visual Studio делают очень хорошее задание при создании работы с намного легче переменными с неявно определенным типом.
я думаю, что следование надлежащим соглашениям о присвоении имен может помочь Вам понять код намного лучше тогда явная типизация.
Это, кажется, тот же вид вопросов как, "shoud я использую префиксы в именах переменной?".
Палка с хорошими именами переменной и позволяют компилятору думать на типах переменных.
Хорошая детективная работа по выявлению этой проблемы!
Я хотел бы предложить альтернативное решение.
Вместо того, чтобы select ()
войны с автором process ()
, вы могли бы использовать Интерфейс IO :: Handle к STDOUT:
use IO::Handle;
foreach(...)
{
...
foreach(...)
{
STDOUT->printflush("Processing $folder");
process($folder);
}
...
}
Я добавил следующую строку внутри цикла, и она сработала:
select STDOUT;
Я думаю, что код в функции process () должен был изменять буфер вывода по умолчанию. Это был код, написанный кем-то другим!
Я не уверен, что это проблема Perl, которая позволяет этому или разработчику, который не изменил его обратно на значение по умолчанию.
Окончательный код выглядел так:
foreach(...)
{
...
foreach(...)
{
select STDOUT;
print("Processing $folder");
$|=1;
process($folder);
}
...
}
Спасибо всем ...