我正在查看Perl发行版中base.pm
的来源,我看不出它与“非实用”模块的区别。如果use base
是“pragma”,那么use Foo
与Foo
是否为任何模块有什么根本的不同?
答案 0 :(得分:7)
pragma没有可靠的定义。最接近官方的是perlpragma。
我个人认为这些是需求(似乎perlpragma也是如此),但核心模块vars和subs被记录为pragma,即使它们的效果不是词法范围。
base和lib与这两个条件都不匹配。他们所做的是向“Perl本身”提供信息。我想这也有资格作为一个实用工具。
我认为我的模块use syntax qw( loop );
务实。 (无耻插头!)
答案 1 :(得分:1)
虽然该名称经常在许多上下文中使用,但我通常将pragma视为使用perldoc perlpragma中记录的提示hash %^H
的内容。这意味着主要区别在于动作必须在编译时; use
有效require
(不在BEGIN中)则不然。这是“实用模块”(通过此定义)与其他模块之间的关键区别。根据此定义,vars
,subs
,base
或lib
都不是编译指示。