Perl后缀'使用'?

时间:2014-08-18 19:27:49

标签: perl syntax module

我刚刚遇到这种语法:

BEGIN { IPC::Shareable->use };

为什么呢? 它是我贡献的一个模块的一部分,一个片段:

package A;
use A;
use IPC::Shareable;
use base 'C';

作者将其更改为:

package A;
use A;
BEGIN { IPC::Shareable->use };
use base 'C';

试着问他,但尚未得到回复。我的问题是:

  1. 为什么在这种情况下使用begin?不是use语句类似于:

    BEGIN {   要求IPC ::可分享;   IPC :: Shareable->进口(); }

  2. 为什么IPC::Shareable->use代替use IPC::Shareable;

1 个答案:

答案 0 :(得分:3)

猜测,UNIVERSAL::require已在某个时刻加载。此模块允许将use作为方法调用。

UNIVERSAL :: require曾经有一些相当令人担忧的错误,但从0.17开始应该是最好的。但是,我相信Module::Runtime比UNIVERSAL :: require更多。

作者为何进行此更改?可能有几个原因,但最可能的情况似乎是UNIVERSAL :: require提供的use方法在模块不可用时不会死亡。