我需要在Perl程序中處理一些HTTP URL,但我懷疑URI
類應該如何幫助我。我應該如何使用Perl URI類?
特別是,我想使用URI
類來解析相對URL並獲取它們的組件。然而,問題是:
我需要一個函數來既
URI
對象和URI字符串作爲參數的工作(或確保只有一個被傳遞)sub foo_string_or_url { my $uri = URI->new(shift);
是正確的做法?我不太喜歡它,因爲它將
URI
串聯起來,並不必要地創建新的對象。提取物成分
my $host = $uri->host;
這也是有問題的,因爲不是所有的
URI
■找主持人,特別是,如果有人通過垃圾的功能,這將die()
。解析相對URL
my $new_url = URI::URL->new($uri, $base)->abs;
IIUC,沒有
->abs
,結果仍將字符串化的相對URL(而不會爲HTTP::Request
的工作),對嗎?此外,這是保證返回URI
?
我應該如何處理這些問題?這種可能性是
- 使用
->isa('URI')
和->can("host")
- 似乎容易出錯,醜對我所有的時間
- 不要使用
URI
類在所有使用正則表達式- 解析網址我寧願使用一個庫解決方案,而不是調試我自己的
個
- 在
try { ... } catch { ... }
- 裹
URI
操作見第一點
- 裹
是否有使用URI
類的理智,很簡單的方法?我沒有想過的簡單東西(在上面的列表中)?
唯一沒有回答的問題是「我應該如何處理這些問題?」,答案是「總是調用abs」。如果您已經擁有絕對URI,它將不會執行任何操作。 – ikegami 2012-02-11 21:02:10