鉴于我有以下不正确的代码:
my $this_is_easier = caller(0)[0];
为什么我必须执行以下操作才能进行编译?
my $this_is_easier = (caller(0))[0];
这只是Perl解析器的细微差别吗?在其他语言(如Python和C ++)中,假定该函数将返回可索引的内容。
当[]
遵循另一个索引时,则表示取消引用。
$foo[...][...] means $foo[...]->[...]
当()
遵循另一个索引时,则表示取消引用。
$foo[...](...) means $foo[...]->(...)
因此,人们期望是非常合理的
foo(...)[...]
意思是
foo(...)->[...]
而不是
( foo(...) )[0]
期望的差异可能是不被支持的原因。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句