Cha*_*ens 30
该use函数:
use ModuleName;
Run Code Online (Sandbox Code Playgroud)
使用该require函数等效于以下代码:
BEGIN {
require ModuleName;
ModuleName->import;
}
Run Code Online (Sandbox Code Playgroud)
该BEGIN块会在解析器看到它时立即运行此代码.该require加载模块或die在试着.然后import调用模块的功能.该import函数可以执行各种操作,但通常将函数加载到命名空间use(通常使用Exporter模块).
请注意,在这种情况下不会调用import:
use ModuleName ();
Run Code Online (Sandbox Code Playgroud)
在那种情况下,它相当于
BEGIN {
require ModuleName;
}
Run Code Online (Sandbox Code Playgroud)
Sin*_*nür 10
Perl附带了很棒的文档.每隔几个月至少阅读一次整个文档,每个人都会受益.
C:\> perldoc -f require
否则
require要求包含库文件(如果尚未包含库文件).该文件通过do-FILE机制包含在内,该机制本质上只是各种各样的eval,需要注意的是调用脚本中的词法变量对包含的代码是不可见的.具有类似于以下子例程的语义:
......等等,
C:\> perldoc -f use
从命名模块将一些语义导入当前包,通常通过将某些子例程或变量名称别名到包中.它完全等同于
Run Code Online (Sandbox Code Playgroud)BEGIN { require Module; Module->import( LIST ); }除了Module必须是一个裸字.
......等
还有perlfaq条目,虽然我认为它比上述信息量少.