[PATCH] Allow PERL5OPT=-W
Michael G Schwern [Sun, 26 Apr 2009 02:16:12 +0000 (21:16 -0500)]
perl.c
pod/perlrun.pod
t/run/runenv.t

diff --git a/perl.c b/perl.c
index 701b010..130a83c 100644 (file)
--- a/perl.c
+++ b/perl.c
@@ -1923,7 +1923,7 @@ S_parse_body(pTHX_ char **env, XSINIT_t xsinit)
                d = s;
                if (!*s)
                    break;
-               if (!strchr("CDIMUdmtw", *s))
+               if (!strchr("CDIMUdmtwW", *s))
                    Perl_croak(aTHX_ "Illegal switch in PERL5OPT: -%c", *s);
                while (++s && *s) {
                    if (isSPACE(*s)) {
index 308bea2..c3b30c8 100644 (file)
@@ -974,7 +974,7 @@ is used. The program should instead say:
 X<PERL5OPT>
 
 Command-line options (switches).  Switches in this variable are taken
-as if they were on every Perl command line.  Only the B<-[CDIMUdmtw]>
+as if they were on every Perl command line.  Only the B<-[CDIMUdmtwW]>
 switches are allowed.  When running taint checks (because the program
 was running setuid or setgid, or the B<-T> switch was used), this
 variable is ignored.  If PERL5OPT begins with B<-T>, tainting will be
index 1d2a6a7..03706ed 100644 (file)
@@ -15,7 +15,7 @@ BEGIN {
     require './test.pl'
 }
 
-plan tests => 75;
+plan tests => 76;
 
 my $STDOUT = tempfile();
 my $STDERR = tempfile();
@@ -157,6 +157,15 @@ try({PERL5OPT => '-t'},
     '-1',
     '');
 
+try({PERL5OPT => '-W'},
+    ['-e', 'local $^W = 0;  no warnings;  print $x'],
+    '',
+    <<ERROR
+Name "main::x" used only once: possible typo at -e line 1.
+Use of uninitialized value \$x in print at -e line 1.
+ERROR
+);
+
 try({PERLLIB => "foobar$Config{path_sep}42"},
     ['-e', 'print grep { $_ eq "foobar" } @INC'],
     'foobar',