sub coderef2text {
my $self = shift;
my $sub = shift;
- croak "Usage: ->coderef2text(CODEREF)" unless ref($sub) eq "CODE";
+ croak "Usage: ->coderef2text(CODEREF)" unless UNIVERSAL::isa($sub, "CODE");
$self->init();
return $self->indent($self->deparse_sub(svref_2object($sub)));
sub pp_and { logop(@_, "and", 3, "&&", 11, "if") }
sub pp_or { logop(@_, "or", 2, "||", 10, "unless") }
+sub pp_dor { logop(@_, "err", 2, "//", 10, "") }
# xor is syntactically a logop, but it's really a binop (contrary to
# old versions of opcode.pl). Syntax is what matters here.
}
sub pp_andassign { logassignop(@_, "&&=") }
-sub pp_orassign { logassignop(@_, "||=") }
+sub pp_orassign { logassignop(@_, "||=") }
+sub pp_dorassign { logassignop(@_, "//=") }
sub listop {
my $self = shift;
# it back.
$kid =~ s/^CORE::GLOBAL:://;
- # If the sub name is not a valid identifier, then somebody
- # (probably Abigail) must have written "foo"->(...). Reproduce
- # this.
- if ($kid !~ /^([a-zA-Z_]|::)([a-zA-Z_0-9]|::)*$/) {
- $kid = single_delim("qq", '"', uninterp(escape_str(unback($kid))));
- $kid .= "->";
- }
-
if (!$declared) {
return "$kid(" . $args . ")";
} elsif (defined $proto and $proto eq "") {