这不是数组引用吗?为什么它不是数组引用?
Isn't this an array reference? Why isn't it an array reference?
我正在尝试使用以下几行调试一个令人费解的问题,深入到我继承的程序的内部,
my $log = [];
$root->validate_subtree($log);
导致以下错误
Treex::PML::Node::validate: log must be an ARRAY reference
$root
是类型 Treex::PML::Node
的对象,而且这两行确实是相邻的——我没有遗漏任何内容。我找到了错误消息的来源,validate_subtree()
如下检查其参数(Node.pm 第 423 行):
sub validate_subtree {
my ($node, $log) = @_;
if (defined $log and UNIVERSAL::isa($log,'ARRAY')) {
croak __PACKAGE__."::validate: log must be an ARRAY reference";
}
我认为 $log = []
确实 将 $log
初始化为数组引用!我错过了什么?
你是对的。您显示的代码确实将 $log
设置为数组引用。此代码:
sub validate_subtree {
my ($node, $log) = @_;
if (defined $log and UNIVERSAL::isa($log,'ARRAY')) {
croak __PACKAGE__."::validate: log must be an ARRAY reference";
}
恰恰在 $log
实际上是一个数组引用时发出声音。我猜你在发行版中发现了一个错误,它应该是
if (defined $log and not UNIVERSAL::isa($log,'ARRAY')) {
我正在尝试使用以下几行调试一个令人费解的问题,深入到我继承的程序的内部,
my $log = [];
$root->validate_subtree($log);
导致以下错误
Treex::PML::Node::validate: log must be an ARRAY reference
$root
是类型 Treex::PML::Node
的对象,而且这两行确实是相邻的——我没有遗漏任何内容。我找到了错误消息的来源,validate_subtree()
如下检查其参数(Node.pm 第 423 行):
sub validate_subtree {
my ($node, $log) = @_;
if (defined $log and UNIVERSAL::isa($log,'ARRAY')) {
croak __PACKAGE__."::validate: log must be an ARRAY reference";
}
我认为 $log = []
确实 将 $log
初始化为数组引用!我错过了什么?
你是对的。您显示的代码确实将 $log
设置为数组引用。此代码:
sub validate_subtree {
my ($node, $log) = @_;
if (defined $log and UNIVERSAL::isa($log,'ARRAY')) {
croak __PACKAGE__."::validate: log must be an ARRAY reference";
}
恰恰在 $log
实际上是一个数组引用时发出声音。我猜你在发行版中发现了一个错误,它应该是
if (defined $log and not UNIVERSAL::isa($log,'ARRAY')) {