2011-06-29 25 views

答えて

3
use LWP::UserAgent; 

require LWP::UserAgent;が許容される場合、それはimportはLWP :: UserAgentのために何もしないことを示すことを行く

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

と同じです。おそらく、ドキュメントの使用の意味requireはこれを微妙に暗示することでしょうか?

require LWP::UserAgent;use LWP::UserAgent;の唯一の違いは、requireが実行された場合です。前者の場合は、ファイル全体がコンパイルされた後に発生します。後者の場合は、その文がコンパイルされるとすぐに発生します。実際には、オブジェクト指向のモジュールに大きな違いはありません。

個人的に、私は、私は私はしたくないものを輸入しないことが保証だ同じだ

use LWP::UserAgent qw(); 

BEGIN { 
    require LWP::UserAgent; 
} 

その方法

として使用し、そして私はお馴染みの use Iを使用します他のモジュールで使用します。

+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

@Learning、no。 'require'は' require'がコンパイル時に実行されるか実行時に実行されるかにかかわらず、モジュールを一度ロードして実行します。 – ikegami

+0

学習:いいえ、一般的です。 requireの前に他のコードがあると、requireが失敗する前に実行されます。 – ysth

-2

これは理想的な答えではないが、おそらくメッセージエラーの場合I.

としてGoogleからに来た誰かを助ける:LWP :: UserAgentのでは見られません。/apache_accesses行86.

解決方法: apt-get install libwww-perl

+0

この質問は、LWPを例にして、 'use'と' require'に関するものでした。 LWPを動作させることではありません。また、あなたの答えはDebian固有のものです。 – amon

+0

私は知っているが、私はこのsoultionを探して、Googleからこのサイトを最初に得た。 –

関連する問題