我对这种语言很陌生,但我之前一直使用
use
导入特定模块,
为什么
LWP::UserAgent
使用 require
来完成 perldoc LWP::UserAgent
中的工作:
require LWP::UserAgent;
use LWP::UserAgent;
与
相同BEGIN {
require LWP::UserAgent;
import LWP::UserAgent;
}
如果
require LWP::UserAgent;
可以接受,则表明 import
对 LWP::UserAgent 没有任何作用。也许文档使用 require
的目的是巧妙地暗示这一点?
require LWP::UserAgent;
和 use LWP::UserAgent;
之间的唯一区别在于 require
何时执行。对于前者,它发生在整个文件编译之后。对于后者,一旦该语句被编译,它就会发生。实际上,面向对象的模块没有太大区别。
我个人使用
use LWP::UserAgent qw( );
与
相同BEGIN {
require LWP::UserAgent;
}
这样,我保证不会导入任何我不想要的东西,并且我使用我用于其他模块的熟悉的
use
。
require Module::Name
与 use
具有相同的效果,仅在运行时,而不是编译时。当您想有条件地需要一个模块时,这有时是有利的。我认为医生没有任何特殊理由说 require
而不是 use
。