做use My::Module
和 和有什么不一样require My::Module
?
4 回答
use
功能:
use ModuleName;
等价于下面使用require
函数的代码:
BEGIN {
require ModuleName;
ModuleName->import;
}
该BEGIN
块使该代码在解析器看到它时立即运行。require
加载模块或die
尝试。然后import
调用模块的函数。该import
函数可以做各种各样的事情,但它通常会将函数加载到它的命名空间中use
(通常与Exporter
模块一起)。
需要注意的是,在这种情况下不会调用 import:
use ModuleName ();
在这种情况下,它相当于
BEGIN {
require ModuleName;
}
use Module
就像require Module
,除了use
4.1:在编译时加载模块,而不是运行时。
4.2:将符号和语义从该包导入到当前包。
Perl 附带了很好的文档。每个人都将从至少每隔几个月阅读一次整个文档中受益。
C:\>
perldoc -f require
否则
require
,如果尚未包含库文件,则要求包含该库文件。该文件是通过 do-FILE 机制包含的,它本质上只是各种 eval,但需要注意的是调用脚本中的词法变量对包含的代码是不可见的。具有类似于以下子程序的语义:
...等。同样,
C:\>
perldoc -f use
将一些语义从命名模块导入当前包,通常通过将某些子例程或变量名称别名到包中。它完全等同于
BEGIN { require Module; Module->import( LIST ); }
除了 Module 必须是一个裸词。
... ETC
还有perlfaq 条目,尽管我认为它的信息量比上面的少。
use
在编译时require
运行,在运行时运行。