warn 
warn LIST
warnThis function produces an error message, printing
LIST to STDERR just like die, but it doesn’t try to exit or throw an
exception. For example:
warn "Debug enabled" if $debug;
If LIST is empty and $@ already contains a value (typically from a
previous eval), the string “\t...caught” is appended following $@ on STDERR. (This is similar to the way die propagates errors, except that warn doesn’t propagate [reraise] the
exception.) If the message string supplied is empty, the message
“Warning: Something's wrong” is
used.
As with die, if the strings
supplied don’t end in a newline, file and line number information is
automatically appended. The warn
function is unrelated to Perl’s –w
command-line option, but can be used in conjunction with it, such as
when you wish to emulate built-ins:
warn "Something wicked\n" if $^W;
No message is printed if there is a $SIG{_ _WARN_ _} handler installed. It is the
handler’s responsibility to deal with the message as it sees fit. One
thing you might want to do is promote a mere warning into an
exception:
local $SIG{_ _WARN_ _} = sub {
my $msg = shift;
die $msg if $msg =~ /isn't numeric/;
};Most handlers must therefore make arrangements to display the
warnings that they are not prepared to deal with, by calling warn again in the handler. This is perfectly
safe; it won’t produce an endless loop because _ _WARN_ _ hooks are not called from ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access