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
sが、誰かが関数にゴミを渡す場合は特に、これはdie()
を意志、ホストを持っているので、これは、また問題があります。相対URLを解決
my $new_url = URI::URL->new($uri, $base)->abs;
IIUC、
->abs
せず、結果はまだ相対URLに文字列化されます(とHTTP::Request
秒間動作しません)、私は右ですか?また、URI
を返すことが保証されていますか?
これらの問題をどのように処理すればよいですか?可能性は
- は私にエラーが発生しやすいと醜いようだすべての時間
- 使用
->isa('URI')
と->can("host")
ある
- 使用
- は全く
URI
クラスを使用して正規表現- を使用してURLを解析しないでください。私はまだ自分のデバッグよりもむしろライブラリソリューションを使用するだろう
- での
- ラップ
URI
動作は、第1の点
がURI
クラスを使用してのSANE、フールプルーフな方法があります参照してください?何かシンプルな私は考えていない(上記のリスト)?
「これらの問題をどのように処理すればよいですか」と答えたのは「常にコールアブソーズ」です。既に絶対URIがある場合は、何もしません。 – ikegami