Perl pragma introduced in Perl 5.6 or so, to more or less replace the previously introduced -w command line switch.
The warnings pragma is used very much like strict pragma. Typically, you want to start the program like this, to avoid embarassing questions from Python zealots:
#!/usr/bin/perl
use warnings;
use strict;
This will enable all warnings and only use proper style.
Warnings pragma is much more flexible than -w. You can disable warnings temporarily inside blocks with no warnings; (certainly more readable than local($^W)=0; and also works in compile phase!), and you can enable specific warnings with things like use warnings qw(syntax utf8);. Also, you can make warnings fatal: use warnings FATAL => qw(syntax); And that's not all! You can also make your own enablable/disablable warnings with it, using the stuff in warnings::register package...
Plain use warnings; is equivalent to use warnings 'all';.
Here's a list of all warning categories, taken from perllexwarn perldoc of Perl 5.6.1:
- all
- chmod
- closure
- exiting
- glob
- io
- closed
- exec
- newline
- pipe
- unopened
misc
numeric
once
overflow
pack
portable
recursion
redefine
regexp
severe
- debugging
- inplace
- internal
- malloc
signal
substr
syntax
- ambiguous
- bareword
- deprecated
- digit
- parenthesis
- precedence
- printf
- prototype
- qw
- reserved
- semicolon
taint
umask
uninitialized
unpack
untie
utf8
void
y2k