This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Deparse our(LIST) correctly
[perl5.git] / lib / B / Deparse.pm
index 80c6401..a9ddabd 100644 (file)
@@ -20,7 +20,7 @@ use B qw(class main_root main_start main_cv svref_2object opnumber perlstring
          CVf_METHOD CVf_LVALUE
         PMf_KEEP PMf_GLOBAL PMf_CONTINUE PMf_EVAL PMf_ONCE
         PMf_MULTILINE PMf_SINGLELINE PMf_FOLD PMf_EXTENDED);
-$VERSION = '1.26';
+$VERSION = '1.27';
 use strict;
 use vars qw/$AUTOLOAD/;
 use warnings ();
@@ -1195,8 +1195,7 @@ sub maybe_local {
     my $self = shift;
     my($op, $cx, $text) = @_;
     my $our_intro = ($op->name =~ /^(gv|rv2)[ash]v$/) ? OPpOUR_INTRO : 0;
-    if ($op->private & (OPpLVAL_INTRO|$our_intro)
-       and not $self->{'avoid_local'}{$$op}) {
+    if ($op->private & (OPpLVAL_INTRO|$our_intro)) {
        my $our_local = ($op->private & OPpLVAL_INTRO) ? "local" : "our";
        if( $our_local eq 'our' ) {
            if ( $text !~ /^\W(\w+::)*\w+\z/
@@ -1206,6 +1205,7 @@ sub maybe_local {
            }
            $text =~ s/(\w+::)+//;
        }
+       return $text if $self->{'avoid_local'}{$$op};
         if (want_scalar($op)) {
            return "$our_local $text";
        } else {
@@ -4789,7 +4789,7 @@ sub matchop {
     $flags = $matchwords{$flags} if $matchwords{$flags};
     if ($pmflags & PMf_ONCE) { # only one kind of delimiter works here
        $re =~ s/\?/\\?/g;
-       $re = "?$re?";
+       $re = "m?$re?";        # explicit 'm' is required
     } elsif ($quote) {
        $re = single_delim($name, $delim, $re);
     }
@@ -5336,7 +5336,7 @@ parameter twice:
        warnings => [FATAL => qw/void io/],
     );
 
-See L<perllexwarn> for more information about lexical warnings.
+See L<warnings> for more information about lexical warnings.
 
 =item hint_bits