2011-06-29 50 views

回答

3
use LWP::UserAgent; 

相同

BEGIN { 
    require LWP::UserAgent; 
    import LWP::UserAgent; 
} 

如果require LWP::UserAgent;是可以接受的,这正好说明import无助于LWP ::用户代理。也许文档中使用require的要点是巧妙地暗示了这一点?

require LWP::UserAgent;use LWP::UserAgent;之间的唯一区别是require执行时。对于前者,它在整个文件被编译之后发生。对于后者,只要该声明已编译完成就会发生。实际上,面向对象的模块没有太大的区别。

就个人而言,我用

use LWP::UserAgent qw(); 

这是一样

BEGIN { 
    require LWP::UserAgent; 
} 

这样的话,我保证不会输入任何东西,我不想,我用的是熟悉的use我用于其他模块。

+0

所以区别在于'import LWP :: UserAgent; ',这到底是什么呢? – Learning

+2

'import LWP :: UserAgent'是'LWP :: UserAgent-> import()'的变体语法;它调用一个名为'import'的类方法。通常情况下,这会使用[Exporter](http://search.cpan.org/perldoc?Exporter)模块将函数导出到调用者的名称空间中,但它实际上可以执行模块作者选择执行的任何操作。 – cjm

1

需要模块: :名称与使用的效果相同,只在运行时,而不是在编译时。当你想有条件地需要一个模块时,这有时是有利的。我认为文档没有任何特别的理由要求而不是使用。

+0

编译时间和运行时间差异只存在于'fastcgi',其中Perl是持久化的,而不是'CGI'模式,对吗? – Learning

+0

@学习,没有。 'require'只会加载并执行一次模块,无论'require'是在编译时还是在运行时完成的。 – ikegami

+0

学习:不,一般。如果在require之前有其他代码,它将在require失败之前执行。 – ysth

-2

这不是理想的答案,但也许有助于从谁谷歌来作为一

对于消息错误某人:在没有找到LWP :: UserAgent的。/apache_accesses line 86.

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

+0

这个问题是关于'use'与'require'的关系,以LWP为例。这不是要让LWP工作。另外,你的答案是Debian特有的。 – amon

+0

我知道,但我寻找这灵魂,并从谷歌首先得到这个网站。 –

相关问题