我正在查看base.pm
Perl 发行版中的源代码,但我看不出它与“非实用”模块的区别。如果use base
是“pragma”,它与任何模块use Foo
在哪里有根本不同吗?Foo
问问题
199 次
2 回答
7
pragma 没有明确的定义。最接近官方的东西是perlpragma。
- 它们通常修改解析器的语言或行为。
- 它们的效果通常是词法范围的。
我个人认为这些是要求(perlpragma 似乎也是如此),但核心模块vars和subs被记录为 pragma,即使它们的效果不是词法范围的。
base和lib不符合任何一个条件。他们所做的是向“Perl 本身”提供信息。我想这也有资格作为一个编译指示。
我认为我的模块use syntax qw( loop );
是务实的。(无耻的插头!)
于 2013-03-14T22:18:43.997 回答
1
虽然该名称经常在许多情况下使用,但我通常将 pragma 视为使用perldoc perlpragma%^H
中记录的提示哈希的东西。这意味着主要区别在于该操作必须在编译时进行;工作,而(不是在开始)没有。这是“实用模块”(根据此定义)与其他模块之间的关键区别。根据这个定义,,或都不是 pragma。use
require
vars
subs
base
lib
于 2013-03-15T01:37:04.660 回答