在Perl中,加载模块的use和require之间有什么区别?

在Perl中,加载模块的use和require之间有什么区别?,perl,module,require,Perl,Module,Require,使用My::Module和要求My::Module有什么区别?来自: 使用模块类似于要求模块,除了使用 4.1:在编译时而不是运行时加载模块 4.2:将符号和语义从该包导入当前包 使用在编译时运行,而要求在运行时运行。函数: use ModuleName; BEGIN { require ModuleName; ModuleName->import; } 相当于使用函数的以下代码: use ModuleName; BEGIN { require ModuleN

使用My::Module和要求My::Module有什么区别?

来自:

使用模块
类似于
要求模块
,除了
使用

4.1:在编译时而不是运行时加载模块

4.2:将符号和语义从该包导入当前包


使用
在编译时运行,而
要求
在运行时运行。

函数:

use ModuleName;
BEGIN {
    require ModuleName;
    ModuleName->import;
}
相当于使用函数的以下代码:

use ModuleName;
BEGIN {
    require ModuleName;
    ModuleName->import;
}
该块使解析器一看到该代码就立即运行该代码。
require
加载模块或正在尝试。然后调用模块的
import
函数。
import
函数可以做各种事情,但它通常将函数加载到
使用它的命名空间中(通常与模块一起使用)

需要注意的是,在这种情况下不会调用import:

use ModuleName ();
在这种情况下,它相当于

BEGIN {
    require ModuleName;
}
BEGIN { require Module; Module->import( LIST ); }

Perl附带了大量文档。每个人都将受益于每几个月至少阅读一次整个文档

C:\>

否则,
require
要求创建库文件 如果还没有,包括在内 包括。该文件通过 执行文件机制,这是 基本上只是各种评估 但要注意的是,词汇变量 在调用脚本中 对包含的代码不可见。有 语义与下面类似 子程序:

。。。等等,同样,

C:\>

将一些语义导入到 来自命名模块的当前包, 通常通过对某些 将子例程或变量名输入到 包裹它完全等同于

BEGIN {
    require ModuleName;
}
BEGIN { require Module; Module->import( LIST ); }
除了模块必须是一个裸字

。。。等


还有一个问题,尽管我认为它的信息量不如上面提到的。

不要忘记调用
import
。这是他们在Perl测试和工作面试中寻找的答案。你需要记住这个@在HALLA中,我喜欢为我的错误内存留一点空间。除了出色的
perldoc
命令外,您还可以通过Ah访问所有相同的文档。你的kbd标签使你很难分辨什么是链接(以及呈现的不是很漂亮)。@Ether:但这是m。不管怎样,这可能很容易自己解决,但对于初学者来说,这绝对是一个非常好的Perl问题。我不明白为什么它不应该在stackoverflow上。危害在哪里?