My understanding is that as of 5.6 -w on the command
line and
use warnings in your code are identical. Both "enable many useful warnings".
As of 5.6 (maybe earlier, I'm not sure) there is a -W
command line option
that will "enable all warnings". I do not know if there is
a use equivalent to -W.
| [reply] |
As far as I know, the use warnings pragma was introduced as:
- it is easier for people who are on non 'shebang supporting' systems to use.
- it can be disabled for certain blocks etc.
Here's an introduction to the new pragma from the What's new in Perl 5.6 page:
Lexical Warnings
'Death is not good. I reject death. I will stay away from trucks today.' - lwall
The way Perl generates warnings has also been completely revised: as a replacement for the -w flag and the $^W special variable, the
warnings pragma gives you more flexibility about what warnings you receive and when. In terms of what, you can now specify warnings by category: there are a bunch of standard categories, such as 'syntax', 'io', 'void', and
modules will be able to define their own categories. You can also choose to escalate any categories of warning into a fatal error.
As for when, the pragma is lexically scoped, so you can switch it on and off as you wish:
use warnings;
$a = @a[1]; # This generates a warning.
{
no warnings;
$a = @a[1]; # This does not.
}
See perllexwarn for how to use this from programs and modules.
| [reply] [d/l] |
D'oh, the proper post is 'below' this one, sorry
As far as I know, the use warnings pragma was introduced as:
- it is easier for people who are on non 'shebang supporting' systems to use.
- it can be disabled for certain sections of code, e.g.
use strict;
use warnings;
print $foo; # Warning here, undefined value
no warnings;
print $foo; # No warning now
use warnings;
print $foo; # Warning again
On systems that don't support the UNIX shebang, it is a pain having to
manually type in
perl -w foo.pl
every time you want warnings. If you can just use the
pragma, it is easier. | [reply] [d/l] |