LWP::Simple

Hippo2000 (2000/7/28)

LWP::Simpleモジュールなのです。

作者はGisle Aasさんです。メールで許可をいただきました。

2001/6/21:山宮隆さんからの指摘を受けて、余分な「;」を削除しました。


目次


名前

get, head, getprint, getstore, mirror - 手続き型LWPインターフェース


概要

 perl -MLWP::Simple -e 'getprint "http://www.sn.no";'
 use LWP::Simple;
 $content = get("http://www.sn.no/")
 if (mirror("http://www.sn.no/", "foo") == RC_NOT_MODIFIED) {
     ...
 }
 if (is_success(getprint("http://www.sn.no/"))) {
     ...
 }

説明

libwww-perlライブラリの簡略化された見栄えが欲しい人々に向いています。これはワンライナーにも適しています。もしより多くの制御や送信するリクエストや受信したレスポンスのヘッダにアクセスする必要があれば、LWP::UserAgentモジュールによって提供されるフルにオブジェクト指向なインターフェースを使わなければなりません。

このモジュールにより以下の関数が提供(そしてエクスポート)されます:

get($url)
get()関数は与えられたURLにより示されるドキュメントを取り出し、それを返します。失敗すればundefを返します。引数$urlは単純な文字列にもURIオブジェクトへのリファレンスにもすることができます。

この関数を使ってWebにアクセスすると、応答コードや('Content-Type'のような)レスポンス・ヘッダを検査することは出来ません。もしその情報が必要であれば、フルOOインターフェースを使わなければなりません。(LWP::UserAgentをご覧下さい)。

head($url)
ドキュメント・ヘッダを取得します。正常ならば以下の5つの変数を返します: ($content_type, $document_length, $modified_time, $expires, $server)

失敗すると空リストを返します。スカラ・コンテキストでは成功するとTRUEを返します。

getprint($url)
URLにより識別されるドキュメントを取得し出力します。ネットワークからデータが受信されると、ドキュメントはSTDOUTに出力されます。もしリクエストが失敗すると、ステータス・コードとメッセージがSTDERRに出力されます。戻り値はHTTP応答コードです。
getstore($url, $file)
URLにより識別されるドキュメントを取得し、ファイルに格納します。戻り値はHTTP応答コードです。
mirror($url, $file)
If-modified-sinceを使い、Content-Lengthを使いながら、URLにより識別されるドキュメントを取得し、ファイルに格納します。戻り値はHTTP応答コードです。

このモジュールはHTTP::Status定数とプロシージャもエクスポートします。getprint()、getstore()、mirror()からの応答コードをチェックするときに使うことが出来ます。定数には以下のものがあります:

   RC_CONTINUE
   RC_SWITCHING_PROTOCOLS
   RC_OK
   RC_CREATED
   RC_ACCEPTED
   RC_NON_AUTHORITATIVE_INFORMATION
   RC_NO_CONTENT
   RC_RESET_CONTENT
   RC_PARTIAL_CONTENT
   RC_MULTIPLE_CHOICES
   RC_MOVED_PERMANENTLY
   RC_MOVED_TEMPORARILY
   RC_SEE_OTHER
   RC_NOT_MODIFIED
   RC_USE_PROXY
   RC_BAD_REQUEST
   RC_UNAUTHORIZED
   RC_PAYMENT_REQUIRED
   RC_FORBIDDEN
   RC_NOT_FOUND
   RC_METHOD_NOT_ALLOWED
   RC_NOT_ACCEPTABLE
   RC_PROXY_AUTHENTICATION_REQUIRED
   RC_REQUEST_TIMEOUT
   RC_CONFLICT
   RC_GONE
   RC_LENGTH_REQUIRED
   RC_PRECONDITION_FAILED
   RC_REQUEST_ENTITY_TOO_LARGE
   RC_REQUEST_URI_TOO_LARGE
   RC_UNSUPPORTED_MEDIA_TYPE
   RC_INTERNAL_SERVER_ERROR
   RC_NOT_IMPLEMENTED
   RC_BAD_GATEWAY
   RC_SERVICE_UNAVAILABLE
   RC_GATEWAY_TIMEOUT
   RC_HTTP_VERSION_NOT_SUPPORTED

HTTP::Status 分類関数には以下のものがあります:

is_success($rc)
応答コードが成功であることを示せばであればTrue
is_error($rc)
応答コードがエラーが発生したことを示せばTrue

明示的に頼めば、このモジュールはLWP::Agentオブジェクトも$uaとしてエクスポートします。

このモジュールによって作成されるユーザ・エージェントは、"LWP::Simple/#.##"("#.##"はlibwww-perlバージョン番号)で識別され、($ua->env_proxyを呼ぶことにより)環境変数によってプロキシーが初期化されます。


参考資料

LWP, LWP::UserAgent, HTTP::Status, lwp-request, lwp-mirror


ホーム Perlの小技 LWP

ご意見、ご質問はこちらの掲示板で受け付けています。
またメールは河馬屋(Nifty)にお願いします。