my($op, $cx, $name, $prec, $flags) = (@_, 0);
my $kid = $op->first;
$kid = $self->deparse($kid, $prec);
- return $self->maybe_parens(($flags & POSTFIX) ? "$kid$name" : "$name$kid",
+ return $self->maybe_parens(($flags & POSTFIX)
+ ? "$kid$name"
+ # avoid confusion with filetests
+ : $name eq '-'
+ && $kid =~ /^[a-zA-Z](?!\w)/
+ ? "$name($kid)"
+ : "$name$kid",
$cx, $prec);
}
if not $parens and not $nollafr and substr($first, 0, 1) eq "(";
push @exprs, $first;
$kid = $kid->sibling;
- if (defined $proto && $proto =~ /^\*\*/ && $kid->name eq "rv2gv") {
+ if (defined $proto && $proto =~ /^\*\*/ && $kid->name eq "rv2gv"
+ && !($kid->private & OPpLVAL_INTRO)) {
push @exprs, $self->deparse($kid->first, 6);
$kid = $kid->sibling;
}