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
  
  
 
Оставить комментарий:
 |   
 |