Re: [abigail@foad.org: [ID 20000901.065] -MO=Deparse and $^W and $[ in same string.]
Robin Houston [Fri, 20 Apr 2001 00:18:53 +0000 (01:18 +0100)]
Message-ID: <20010420001853.A13350@puffinry.freeserve.co.uk>

p4raw-id: //depot/perl@9759

ext/B/B/Deparse.pm

index 25db66a..47e8e99 100644 (file)
@@ -2630,14 +2630,14 @@ sub const_sv {
 sub pp_const {
     my $self = shift;
     my($op, $cx) = @_;
+    if ($op->private & OPpCONST_ARYBASE) {
+        return '$[';
+    }
 #    if ($op->private & OPpCONST_BARE) { # trouble with `=>' autoquoting 
 #      return $self->const_sv($op)->PV;
 #    }
     my $sv = $self->const_sv($op);
 #    return const($sv);
-    if ($op->private & OPpCONST_ARYBASE) {
-       return '$[';
-    }
     my $c = const $sv; 
     return $c =~ /^-\d/ ? $self->maybe_parens($c, $cx, 21) : $c;
 }
@@ -2647,7 +2647,10 @@ sub dq {
     my $op = shift;
     my $type = $op->name;
     if ($type eq "const") {
-       return uninterp(escape_str(unback($self->const_sv($op)->PV)));
+       if ($op->private & OPpCONST_ARYBASE) {
+           return '$[';
+       }
+       return uninterp(escape_str(unback(const($self->const_sv($op)))));
     } elsif ($type eq "concat") {
        my $first = $self->dq($op->first);
        my $last  = $self->dq($op->last);