As far as I know, the use warnings pragma was introduced as:
in reply to RE: RE: CGI::Carp
in thread Reviews Quest
- 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:
See perllexwarn for how to use this from programs and modules.
$a = @a; # This generates a warning.
$a = @a; # This does not.