1

这是错误:

No 'new' for class 'Spec::Benchmark::bzip2401' in 'C:/Users/Tester/Documents/SpecINT2k6_WoT/benchspec/CPU2006/401.bzip2/Spec/object.pm'

locate.pl 文件中的错误点:

my $class="Spec::Benchmark::${name}${num}";
                if (!$class->can('new')) {
                    Log(0, "\nNo 'new' for class '$class' in '$pm'\n");
                    next;
                }

这是整个 locate.pl 文件的链接http://ks.tier2.hep.manchester.ac.uk/Repositories/other-software/SPEC_CPU2006v1.1/bin/locate.pl

这是 object.pm 文件http://codepad.org/O196ykIq

运行 Specint2006 套件时出现此错误,但此错误与套件无关。谁能告诉我做了什么!$class->can('new'),为什么它在这里返回真实?

谢谢。

4

1 回答 1

1

可以检查类是否有方法。返回值始终是 coderef。如果该类不知道该方法,则返回值为undef。该类不知道新方法,因此它是错误的。但是你用not来称呼它

!$class->can('new')

从这里引用

同样,关于有效调用的相同规则也适用——如果您需要额外的偏执,请使用 eval 块或祝福。

于 2013-06-25T11:26:11.790 回答