Blog

Perl5 における HTTP Client library の選び方

blocking I/O を利用するライブラリ限定のはなしだけど。

HTTP::Lite

依存すくないのがうり。速度重視じゃないし、機能もすくない。インターフェイスも、LWP にくらべるとナマナマしいかんじ。

CPAN module をいれたくなくてしょうがない場合にのみつかうべき。LWP の存在が保証されていないような環境に配布したい場合に bundle して配布するとかが主用途。
(実際に HTTP::Lite は cpanminus に bundle されている)

LWP

デファクトスタンダード。連鯖でもたいがいはインストール済だし、とりあえず LWP つかっておくべき。

どれつかうか迷ってる人はとりあえず LWP つかっておけばよい。

WWW::Curl

速度がクリティカルな場合には WWW::Curl つかうとよいんだけど、相当数のリクエストをなげるよほど大規模なクローラでもないかぎりは、LWP で十分。

どうしてもどうにもならないときにだけつかうようにしましょう。

URI::Fetch

定期的に特定のページにアクセスする場合に特化した LWPのラッパー である。

Last-Modified, ETag を考慮して cache をきかせたりする機能がある。

RSS アグリゲーターなどを実装する場合など、特定の URL を定期的にアクセスする場合につかうとよいが、単発でアクセスするだけならつかう意味はない。

【2010-12-31 追記】
現在は Furl があるので、パフォーマンスが必要な場合には Furl をつかえばよかろう。