我收到错误:
Ambiguous call resolved as CORE::join(), qualify as such or use & at
当我将错误修复为:
$args = CORE::join( ', ', @$args );
一切正常。
但是当我将其修复为:
$args = &join( ', ', @$args );
按照错误消息的建议,我得到了不同的错误:
Can't locate object method "_make_instance" via package ", " (perhaps you forgot to load ", "?) at
为什么第二个修复不起作用?
您收到错误是因为您有一个名为 join 的子,因此您需要消除歧义。 要使其调用内置,请在前面加上CORE::
。 要使其调用 sub,请在前面加上&
。
此错误是因为您正在调用 sub,它实际上是一个期望对象或类作为第一个参数的方法,当您使用方法调用语法时,这将隐式发生。
您收到该警告是因为您定义了一个名为join
的子例程。现在Perl不确定join( ', ', @$args )
应该调用内置函数还是你的子例程。
CORE::join
明确地调用内置join
.
&join(...)
明确地调用您的子例程(并覆盖它可能具有的任何原型(。至于为什么你的子例程会抛出关于一个名为,
和_make_instance
的包的奇怪错误,如果你不向我们展示代码,我们就无法回答这个问题。