perl v5.18.2
Поведение warn с использованием символа новой строки "\n":
test.pl
perl test.pl
Для случая с die результат аналогичен: die "Goodbye"; напечатает:
А die "Good\nbye"; выдаст это:
Поэтому, чтобы не было недоразумений, лучше вообще не использовать "\n" в данных функциях.
Поведение warn с использованием символа новой строки "\n":
test.pl
warn "Hello"; warn "World\n"; warn "Wor\nld";
perl test.pl
Hello at m.pl line 4. World Wor ld at m.pl line 6.
Для случая с die результат аналогичен: die "Goodbye"; напечатает:
Goodbye at test.pl line 4
А die "Good\nbye"; выдаст это:
Good bye at test 4
Поэтому, чтобы не было недоразумений, лучше вообще не использовать "\n" в данных функциях.
Честно говоря, не поняла, какая может быть опасность в использовании "\n". Это ведь его нормальное поведение, и наоборот, иногда бывает очень полезно, чтобы сделать текст в логах более удобно-читаемым.
ОтветитьУдалитьМ.б. просто стоит попробовать использовать не двойные, а одинарные кавычки, чтобы вывод стал более предсказуемым?
Опасности, как таковой, может и нет (пример по крайней мере привести не могу на данный момент), но вот некоторые недоразумения при использовании "\n" в конце сообщений в функциях warn, die могут иметь место. В качестве примера можно рассмотреть такой банальный случай:
Удалитьtest.pl
open STDERR, ">", 'err.log' or die "Error: $!";
warn "Обратить внимание!\n";
warn "Обратить внимание!";
close STDERR;
err.log
Обратить внимание!
Обратить внимание! at /path/test.pl line 4.
И при использовании такого инструмента, как grep, и шаблона для поиска "line" (grep -n "line" err.log), мы не получим все упоминания о предупреждениях.
Поэтому, просто нужно быть бдительным в данном отношении и быть готовым к подобным особенностям, если уж возникла необходимость в "\n".