为什么LWP :: UserAgent是由require LWP :: UserAgent导入而不是使用LWP :: UserAgent?

时间:2011-06-29 01:50:45

标签: perl require perl-module

我对这种语言很陌生,但我之前一直在使用use导入特定模块,

为什么LWP::UserAgent使用require来完成perldoc LWP::UserAgent的工作:

require LWP::UserAgent;

3 个答案:

答案 0 :(得分:3)

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我用于其他模块。

答案 1 :(得分:1)

require Module :: Name与使用效果相同,仅在运行时,而不是在编译时。当您想要有条件地需要模块时,这有时是有利的。我认为医生没有任何特别的理由说要求而不是使用。

答案 2 :(得分:-2)

这不是一个理想的答案,但也许可以帮助那些来自谷歌的人。

对于消息错误:在./apache_accesses第86行找不到LWP :: UserAgent。

解决方案: apt-get install libwww-perl