索引子例程返回的列表 - 语法

时间:2014-07-11 22:17:19

标签: perl syntax

鉴于我有以下错误代码:

my $this_is_easier = caller(0)[0];

为什么我需要为了编译而执行以下操作?

my $this_is_easier = (caller(0))[0];

这只是Perl解析器的细微差别吗?在Python和C ++等其他语言中,它假设函数将返回一些可索引的东西。

1 个答案:

答案 0 :(得分:3)

[]跟随另一个索引时,它意味着取消引用。

$foo[...][...]   means   $foo[...]->[...]

()跟随另一个索引时,它意味着取消引用。

$foo[...](...)   means   $foo[...]->(...)

因此,人们期待

是非常合理的
foo(...)[...]

表示

foo(...)->[...]

而不是

( foo(...) )[0]

期望的分歧可能是它不受支持的原因。