鉴于我有以下错误代码:
my $this_is_easier = caller(0)[0];
为什么我需要为了编译而执行以下操作?
my $this_is_easier = (caller(0))[0];
这只是Perl解析器的细微差别吗?在Python和C ++等其他语言中,它假设函数将返回一些可索引的东西。
答案 0 :(得分:3)
当[]
跟随另一个索引时,它意味着取消引用。
$foo[...][...] means $foo[...]->[...]
当()
跟随另一个索引时,它意味着取消引用。
$foo[...](...) means $foo[...]->(...)
因此,人们期待
是非常合理的foo(...)[...]
表示
foo(...)->[...]
而不是
( foo(...) )[0]
期望的分歧可能是它不受支持的原因。