summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorRobin Houston <robin@cpan.org>2001-04-05 20:55:51 +0100
committerJarkko Hietaniemi <jhi@iki.fi>2001-04-05 22:12:53 +0000
commita0e66df8721677dce0bcba1a3283d09ec891916c (patch)
tree65dae5b7849047819368c6a8df386bdb3972d473 /ext
parent82bafd27c447b694ac8afacb18ba6e4892659fc4 (diff)
downloadperl-a0e66df8721677dce0bcba1a3283d09ec891916c.tar.gz
regex quoting, and a minor milestone
Message-ID: <20010405195551.A16686@puffinry.freeserve.co.uk> p4raw-id: //depot/perl@9571
Diffstat (limited to 'ext')
-rw-r--r--ext/B/B/Deparse.pm10
1 files changed, 8 insertions, 2 deletions
diff --git a/ext/B/B/Deparse.pm b/ext/B/B/Deparse.pm
index b274dc0314..49c04362ce 100644
--- a/ext/B/B/Deparse.pm
+++ b/ext/B/B/Deparse.pm
@@ -2710,9 +2710,15 @@ sub re_dq {
my $op = shift;
my $type = $op->name;
if ($type eq "const") {
- return uninterp($self->const_sv($op)->PV);
+ return re_uninterp($self->const_sv($op)->PV);
} elsif ($type eq "concat") {
- return $self->re_dq($op->first) . $self->re_dq($op->last);
+ my $first = $self->re_dq($op->first);
+ my $last = $self->re_dq($op->last);
+ # Disambiguate "${foo}bar", "${foo}{bar}", "${foo}[1]"
+ if ($last =~ /^[{\[\w]/) {
+ $first =~ s/([%\$@])([A-Za-z_]\w*)$/${1}{$2}/;
+ }
+ return $first . $last;
} elsif ($type eq "uc") {
return '\U' . $self->re_dq($op->first->sibling) . '\E';
} elsif ($type eq "lc") {