Perl:在[]中调用模块方法

时间:2013-07-11 01:01:28

标签: perl

使用示例,让perl程序以下列方式启动:

use strict;
use warnings;
use Time::HiRes;

之间有什么区别
 my $request_start_epoch = [Time::HiRes::gettimeofday];

 my $request_start_epoch = Time::HiRes::gettimeofday;

2 个答案:

答案 0 :(得分:4)

前者在列表上下文中调用函数,汇编包含返回列表元素的匿名数组,并将$request_start_epoch设置为对该数组的引用。

后者在标量上下文中调用函数并将其返回值存储在$request_start_epoch中。

这几乎总是不同的;唯一一次它们是相同的,如果函数在标量上下文中的行为是将其列表上下文结果包装在一个匿名数组中并返回对它的引用。我从来没有见过这样的任何方法,但我确定某个地方有人在某个时候完成了它!

答案 1 :(得分:0)

括号[]将gettimeofday返回的内容转换为数组引用。在您的情况下,它将是一个元素数组。

创建数组引用。

    $arr_ref = [ 1,2,3,4,5 ];

引用它。

    @{ $arr_ref };

访问元素。

    $ { $array_ref }[0]