根据这个
http://perldoc.perl.org/UNIVERSAL.html
我不应该使用UNIVERSAL :: isa()而应该使用$ obj-> isa()或CLASS-> isa().
这意味着要首先找出某些东西是引用,然后引用这个类,我必须这样做
eval { $poss->isa("Class") }
Run Code Online (Sandbox Code Playgroud)
并检查$ @和所有那些gumph,否则
use Scalar::Util 'blessed';
blessed $ref && $ref->isa($class);
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么?UNIVERSAL :: isa有什么问题?这对于以下事情来说更清洁:
my $self = shift if UNIVERSAL::isa($_[0], __PACKAGE__)
Run Code Online (Sandbox Code Playgroud)
要查看是否正在对象上调用此函数.还有一个很好的清洁替代方案,不会因为&符和潜在的长线而变得麻烦吗?
perl ×1