warn
Синтаксис
warn LIST
Описание
Выводит сообщение в STDERR аналогично функции
die,
но в отличие от последней не завершает выполнение программы и не генерирует исключений.
Сообщение не печатается, если установлен обработчик сигнала {__WARN__}. В этом случае
генерация и форматирование сообщения возлагаются на обработчик, который может, в частности,
содержать вызов die. Впрочем, большая часть обработчиков ограничивается только форматированием
предупреждений, а если они не укладываются в заранее определенный формат, то обработчик
снова вызывает warn. При этом никакой бесконечный цикл не образуется, поскольку обработчик не является реентерабельным.
Понятно, что такое поведение несколько отличается от логики работы обработчиков $SIG{__DIE__},
которые сами не подавляют вывод сообщения функции die, а вместо этого вызывают die,
аргументом которой является модифицированный текст сообщения, еще раз.
Использование обработчика __WARN__ позволяет реализовать простой механизм подавления
всех предупреждений, которые приводят к аварийному завершению CGI-программ. Например:
# Вырезание всех сообщений этапа компиляции
BEGIN { $SIG{'__WARN__'} = sub { warn $_[0] if $DOWARN } }
my $foo = 10;
my $foo = 20; # никаких предупреждений о
# дублировании my $foo,
# никаких предупреждений до этой строки
$DOWARN = 1;
# а вот теперь можно выдавать предупреждения
warn "$foo is alive and $foo!"; # это будет напечатано
Thanks
2023-11-16 22:30:18 Svetlana Thank you very useful information
Оставить комментарий:
|
|