2012-09-06 15 views
5

データベースからURLを取得して、ファイル:: fetch()を実行するスクリプトを実行しています。私の理解から、file :: fetch()は実際にダウンロードされるURLにファイルがある場合にのみ動作します。Perl File :: URLにファイル部分がないためにフェッチに失敗しました

ただし、私のデータベースには、取得するファイルがない場合があります。ですから、ファイル:: fetch()を実行しようとしているURLにファイルがあることを確認するために使用できるモジュールはありますか?

私のスクリプトの行$ URLは実際にフェッチすべきファイルとhttp://asiaone.comのようなものかもしれ

my $uri_handle = File::Fetch->new(uri => $url); 

があります。

そして、私は避けようとしているこのエラーを受け取ります。なぜなら、フェッチするファイルを主に含む他のURLがあるからです。

Use of uninitialized value $path in pattern match (m//) at C:/Perl/lib/File/Spec/Unix.pm line 267. 
Use of uninitialized value in string eq at C:/Perl/lib/File/Fetch.pm line 395. 
Hostname required when fetching from 'http' at C:\test\multihashtest2.pl line 100 thread 2 

ファイルをチェックするために正規表現をフォーマットするにはどうすればよいですか?これを容易にするために使用できるモジュールはありますか?

正当なURLがmanual of File::Fetchから

http://the.earth.li/~sgtatham/putty/latest/x86/puttytel.exe 
+0

有効なURLはどのように見えますか? –

答えて

3

以下のようなものになるだろうあなたがエラーを黙らせるためにfalseに設定することができ、そこにこのフラグは、ある$File::Fetch::WARN

この変数は、 File :: Fetchがcarpするかどうかで内部的に発生したエラーを制御します。

falseに設定すると、警告が消えます。 error() メソッドの出力を手動で調べて、何が問題になったのかを確認します。

デフォルトはtrueです。

+1

このオプションをfalseに適用するにはどうすればよいですか? –

+1

'$ File :: Fetch :: WARN = 0;で試してください –

+0

私はそのコード行を適用した後も同じエラーが表示されます。出力からC:\ test \ multihashtest2.pl line 100 thread 2 'エラーで 'http'からフェッチするときに必要な'ホスト名のみを削除します。まだ初期化されていない値を示す他の2つのエラーが残ります。 –

関連する問題