my $self = shift;
my($op, $cx, $text) = @_;
if ($op->private & OPpLVAL_INTRO and not $self->{'avoid_local'}{$$op}) {
- return $self->maybe_parens_func("local", $text, $cx, 16);
+ if (want_scalar($op)) {
+ return "local $text";
+ } else {
+ return $self->maybe_parens_func("local", $text, $cx, 16);
+ }
} else {
return $text;
}
my $self = shift;
my($op, $cx, $text) = @_;
if ($op->private & OPpLVAL_INTRO and not $self->{'avoid_local'}{$$op}) {
- return $self->maybe_parens_func("my", $text, $cx, 16);
+ if (want_scalar($op)) {
+ return "my $text";
+ } else {
+ return $self->maybe_parens_func("my", $text, $cx, 16);
+ }
} else {
return $text;
}
} else {
$stash = $stash . "::";
}
- if ($name =~ /^([\cA-\cZ])$/) {
- $name = "^" . chr(64 + ord($1));
+ if ($name =~ /^([\cA-\cZ])(.*)$/) {
+ $name = "^" . chr(64 + ord($1)) . $2;
+ $name = "{$name}" if length($2); # ${^WARNING_BITS} etc
}
return $stash . $name;
}
# return $self->const_sv($op)->PV;
# }
my $sv = $self->const_sv($op);
- return const($sv);
+# return const($sv);
+ my $c = const $sv;
+ return $c =~ /^-\d/ ? $self->maybe_parens($c, $cx, 21) : $c;
}
sub dq {