Запись в файл без кэша (Perl)

Материал из Неолурк, народный Lurkmore
Перейти к навигации Перейти к поиску

Запись в файл без кэша (Perl) — вопрос записи информации в файле по мере работы скрипта, а не в конце его работы. По умолчанию Perl сохраняет данные вывода в кэше и исторгает их в файл только в конце работы скрипта. Если код работает длительное время, то становится тяжело проконтролировать его выполнение посредством чтения файла из параллельного окна — в том не будет вообще ничего.

Подробности[править]

Так как Perl — эзотерический язык, то для того, чтобы заставить стандартный STDOUT (который выдаётся затем в файл при помощи оператора >, и сохраняется в буфере до момента его заполнения, что может занять немало времени), то надо отдать следующий приказ:

$| = 1;

Либо же, что делает то же самое:

STDOUT->autoflush(1);

После этого каждая операция вывода будет исполнена в файл моментально.

Если надо отправить операцию обновления файла не после каждой операции вывода, а после определённого момента, можно вызвать операцию ->flush() от конкретного потока или файла. Для этого необходимо подключение пакета IO::Handle.

Movax1010h.png Глубокий смысл скрыт в этих неестественных языках
Языки программированияПромышленные: BATC#CC++JavaJavaScript (AJAX) • PascalPerlPHPPythonRubyABAPАссемблерВасикFortran (Профессор)
Эзотерические: BrainFuckHQ9++ErlangForthHaskellLISP (My other car) • PrologTclΤΕΧOracleMySQLGolangВ++Scala
ПрофессииБыдлокодерПрограммистТестировщикХакерХеллоуворлдщикIT-звёздыПрограммист (существо)
Методы и стилиReverse EngineeringАнти-паттернВыстрелить себе в ногуГрязный хакКод (индусский) • КостыльМетод научного тыкаПомолясьСвистелки и перделкиОчередьСпортивное программированиеОбфускацияБета-тестАльфа-тестШаблоныRegReplaceФреймворкБыдлокодIndex.phpОхота за жукамиКуМирКлеточный автомат
Средства разработкиSublime TextПодсветка синтаксиса кодаUnstable DiffusionAPIPythonTutorCodeWarsDataCampUnity3DКнижный PythonMallocСвязный списокSOLIDООПУказательNULLWeLang++
ЛюдиИлья КанторЮрий КлючевскийЭдуард ЛаасЭдвард СноуденСеймур Пейперт
Прочее++i + ++iDeadline%s640 килобайтCMSDummy modeЕГГОГFoobarGod is real, unless explicitly declared as integerGOTOIfconfigKISSRegExpSICPsql.ruXyzzyДискетаИнжалид дежицеКОИ-8ЛогМанРекурсияСУБДТест ТьюрингаУмение разбираться в чужом кодеФаза ЛуныФатальный недостатокПроблема 2000ТаймстампКэшЗапись в файл без кэша (Perl)Танцы с бубномКодач