8

我正在查看base.pmPerl 发行版中的源代码,但我看不出它与“非实用”模块的区别。如果use base是“pragma”,它与任何模块use Foo在哪里有根本不同吗?Foo

4

2 回答 2

7

pragma 没有明确的定义。最接近官方的东西是perlpragma

  • 它们通常修改解析器的语言或行为。
  • 它们的效果通常是词法范围的。

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

baselib不符合任何一个条件。他们所做的是向“Perl 本身”提供信息。我想这也有资格作为一个编译指示。

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

于 2013-03-14T22:18:43.997 回答
1

虽然该名称经常在许多情况下使用,但我通常将 pragma 视为使用perldoc perlpragma%^H中记录的提示哈希的东西。这意味着主要区别在于该操作必须在编译时进行;工作,而(不是在开始)没有。这是“实用模块”(根据此定义)与其他模块之间的关键区别。根据这个定义,,或都不是 pragma。userequirevarssubsbaselib

于 2013-03-15T01:37:04.660 回答