Better localisation of $_ in diagnostics.
Rafael Garcia-Suarez [Wed, 7 Mar 2007 10:57:11 +0000 (10:57 +0000)]
This fixes bug #41717.

p4raw-id: //depot/perl@30491

lib/diagnostics.pm

index e81581b..482fe28 100755 (executable)
@@ -181,11 +181,11 @@ Tom Christiansen <F<tchrist@mox.perl.com>>, 25 June 1995.
 =cut
 
 use strict;
-use 5.006;
+use 5.009001;
 use Carp;
 $Carp::Internal{__PACKAGE__.""}++;
 
-our $VERSION = 1.16;
+our $VERSION = 1.17;
 our $DEBUG;
 our $VERBOSE;
 our $PRETTY;
@@ -221,7 +221,7 @@ $DEBUG ||= 0;
 my $WHOAMI = ref bless [];  # nobody's business, prolly not even mine
 
 local $| = 1;
-local $_;
+my $_;
 
 my $standalone;
 my(%HTML_2_Troff, %HTML_2_Latin_1, %HTML_2_ASCII_7);
@@ -323,7 +323,6 @@ my %msg;
 {
     print STDERR "FINISHING COMPILATION for $_\n" if $DEBUG;
     local $/ = '';
-    local $_;
     my $header;
     my $for_item;
     while (<POD_DIAG>) {
@@ -548,7 +547,7 @@ my $count;
 my $wantspace;
 sub splainthis {
     return 0 if $TRACEONLY;
-    local $_ = shift;
+    $_ = shift;
     local $\;
     ### &finish_compilation unless %msg;
     s/\.?\n+$//;