Я нашел решение. Проблемой является mod_deflate, который включен по умолчанию на debian, но не используется на FreeBSD по умолчанию. Выключение mod_deflate дает мне вывод по требованию.
Я предполагаю, что вы хотите это сделать, потому что вам не нужно включать «местное скалярное время печати» для каждого оператора печати. Если так, я бы рекомендовал сделать это попроще.
Вместо использования print
в каждом операторе печати создайте отдельные функции для регистрации сообщений об ошибках, информационных сообщений и вывода на печать. Примерно так:
sub logmsg {
print (scalar localtime() . " @_\n");
}
sub logerr {
print STDERR (scalar localtime() . "ERROR: @_\n");
}
sub debug {
if ($debug) {
print "DEBUG: @_\n";
}
}
Затем в сценарии я всегда буду использовать logmsg
или logerr
в зависимости от ситуации. Это позволяет легко изменить расположение сообщений журнала, изменив эти несколько функций. В вашем случае вы также можете изменить функции журнала для записи непосредственно в файл, а не в STDOUT / STDERR. (В моем случае я часто использую syslog вместо этого, поэтому я удалю код временной метки и вместо этого буду использовать, например, Sys :: Syslog
с соответствующими возможностями и уровнем журнала.)