2012-09-06 31 views
5

我正在運行一個腳本,該腳本從數據庫中提取URL並執行file :: fetch()。根據我的理解,file :: fetch()只在URL中有一個文件要下載時才起作用。Perl文件::提取失敗,因爲該URL沒有文件部分

但是,在我的數據庫中偶爾會有一些URL沒有被提取的文件。那麼,是否有任何模塊可以用來檢查URL中的文件是否正在嘗試執行file :: fetch()?

有一個在我的腳本

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

,其中$ URL可能類似於http://asiaone.com沒有文件實際上是獲取一條線。

我得到這個錯誤,我拼命試圖避免,因爲還有其他的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會像下面

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

有效的url是怎麼樣的? –

回答

3

manual of File::Fetch有這個標誌,$File::Fetch::WARN,您可以設置爲false以沉默的錯誤:

這個變量控制是否應該攔截 File :: Fetch在內部遇到的錯誤。

設置爲false以靜默警告。手動檢查錯誤() 方法的輸出以查看出了什麼問題。

默認爲true。

+1

我如何將該選項應用於false? –

+1

嘗試'$ File :: Fetch :: WARN = 0;' –

+0

我應用該行代碼後仍出現同樣的錯誤。它只刪除從C:\ test \ multihashtest2.pl行100'線程2'從輸出'http'中獲取時所需的'主機名。說明未初始化值的其他兩個錯誤仍然存​​在。 –

相關問題