| Search perlmeme.org | |
| Home » Faqs » Perl thinking » Warnings |
Sometimes at the top of a Perl program you'll see:
#!/usr/bin/perl
and sometimes you'll see:
#!/usr/bin/perl -w
When you add -w you're asking the Perl compiler to warn you about things in
your code that may be errors.
The following rather sloppy little program assumes that $day exists:
#!/usr/bin/perl
print "Today is $day\n";
exit 0;
and it produces the following output:
Today is
However with the addition of the -w command line flag:
#!/usr/bin/perl -w
print "Today is $day\n";
exit 0;
when we run the program we are duly warned:
Name "main::day" used only once: possible typo at ./t.pl line 5.
Use of uninitialized value in concatenation (.) or string at ./t.pl line 5.
Today is
These days, the -w command line flag is usually replaced with the
warnings pragma, as the latter is more flexible, and has scope that is
limited to the enclosing block, whilst -w is global in effect.
You'll find that the combination of the strict and warnings pragmas
will catch lots of errors before they get out of hand.
So make a point of starting any program with:
#!/usr/bin/perl
use strict;
use warnings;
perldoc perlrun (look for -w)
perldoc perllexwarn
perldoc warnings
perldoc diagnostics
perldoc perldiag