Perl Programming Documentation
Download Perl
Explore

Manual

- Overview
- Tutorials
- FAQs
- History / Changes
- License

Reference

- Language
- Functions
- Operators
- Special Variables
- Pragmas
- Utilities
- Internals
- Platform Specific

Modules

- A • B • C • D • E
- F • G • H • I • L
- M • N • O • P • S
- T • U • X

Tools

- Preferences

# warn

Perl 5 version 26.0 documentation
Go to top
Show recent pages
Recently read

# warn

Perl functions A-Z | Perl functions by category | The 'perlfunc' manpage

- warn LIST

  Prints the value of LIST to STDERR. If the last element of LIST does not end in a newline, it appends the same file/line number text as die does.

  If the output is empty and $@ already contains a value (typically from a previous eval) that value is used after appending `"\t...caught"` to $@ . This is useful for staying almost, but not entirely similar to die.

  If $@ is empty, then the string `"Warning: Something's wrong"` is used.

  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 (like, for instance, converting it into a die). Most handlers must therefore arrange to actually display the warnings that they are not prepared to deal with, by calling warn again in the handler. Note that this is quite safe and will not produce an endless loop, since `__WARN__` hooks are not called from inside one.

  You will find this behavior is slightly different from that of $SIG{__DIE__} handlers (which don't suppress the error text, but can instead call die again to change it).

  Using a `__WARN__` handler provides a powerful way to silence all warnings (even the so-called mandatory ones). An example:

          # wipe out *all* compile-time warnings    BEGIN { $SIG{'__WARN__'} = sub { warn $_[0] if $DOWARN } }    my $foo = 10;    my $foo = 20;          # no warning about duplicate my $foo,                           # but hey, you asked for it!    # no compile-time or run-time warnings before here    $DOWARN = 1;    # run-time warnings enabled after here    warn "\$foo is alive and $foo!";     # does show up

  See perlvar for details on setting %SIG entries and for more examples. See the Carp module for other kinds of warnings using its `carp` and `cluck` functions.