Печать Perl, буферизующая сброс

У меня было то же беспокойство, когда я начал использовать ключевое слово var .
Однако я привыкал к нему со временем и не собирающийся возвращаться к явным типам переменных. compiler\intellisense Visual Studio делают очень хорошее задание при создании работы с намного легче переменными с неявно определенным типом.

я думаю, что следование надлежащим соглашениям о присвоении имен может помочь Вам понять код намного лучше тогда явная типизация.

Это, кажется, тот же вид вопросов как, "shoud я использую префиксы в именах переменной?".
Палка с хорошими именами переменной и позволяют компилятору думать на типах переменных.

5
задан Manoj 3 August 2009 в 11:38
поделиться

2 ответа

Хорошая детективная работа по выявлению этой проблемы!

Я хотел бы предложить альтернативное решение.

Вместо того, чтобы select () войны с автором process () , вы могли бы использовать Интерфейс IO :: Handle к STDOUT:

use IO::Handle;

foreach(...)
{
    ...

    foreach(...)
    {
        STDOUT->printflush("Processing $folder");

        process($folder);
    }
    ...
}
11
ответ дан 18 December 2019 в 10:47
поделиться

Я добавил следующую строку внутри цикла, и она сработала:

select STDOUT;

Я думаю, что код в функции process () должен был изменять буфер вывода по умолчанию. Это был код, написанный кем-то другим!

Я не уверен, что это проблема Perl, которая позволяет этому или разработчику, который не изменил его обратно на значение по умолчанию.

Окончательный код выглядел так:

foreach(...)
{
    ...

    foreach(...)
    {
        select STDOUT;

        print("Processing $folder");
        $|=1;
        process($folder);
    }
    ...
}

Спасибо всем ...

5
ответ дан 18 December 2019 в 10:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: