什么使模块成为一个实用的模块?

时间:2013-03-14 22:06:32

标签: perl

我正在查看Perl发行版中base.pm的来源,我看不出它与“非实用”模块的区别。如果use base是“pragma”,那么use FooFoo是否为任何模块有什么根本的不同?

2 个答案:

答案 0 :(得分:7)

pragma没有可靠的定义。最接近官方的是perlpragma

  • 他们通常会修改语言或解析器的行为。
  • 他们的影响通常是词汇范围。

我个人认为这些是需求(似乎perlpragma也是如此),但核心模块varssubs被记录为pragma,即使它们的效果不是词法范围。

baselib与这两个条件都不匹配。他们所做的是向“Perl本身”提供信息。我想这也有资格作为一个实用工具。

我认为我的模块use syntax qw( loop );务实。 (无耻插头!)

答案 1 :(得分:1)

虽然该名称经常在许多上下文中使用,但我通常将pragma视为使用perldoc perlpragma中记录的提示hash %^H的内容。这意味着主要区别在于动作必须在编译时; use有效require(不在BEGIN中)则不然。这是“实用模块”(通过此定义)与其他模块之间的关键区别。根据此定义,varssubsbaselib都不是编译指示。