这是错误:
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')
做了什么,为什么它在这里回归真实?
感谢。
答案 0 :(得分:1)
可以检查Class是否具有该方法。返回值始终是coderef。如果类不知道方法,则返回值为 undef 。 Class不知道新方法,所以它是假的。但是你用不
来称呼它!$class->can('new')
来自HERE
同样,关于拥有有效的invocand的相同规则适用 - 使用eval块或祝福,如果你需要额外的偏执。