タグ

ブックマーク / digit.que.ne.jp (5)

  • Perlメモ/バイナリデータを送るCGI - Walrus, Digit.

    バイナリデータを送るCGIのための簡単なサンプル。 画像データを送出するカウンタ、各種ファイルを送出するアップローダなど、バイナリファイルをCGIを通して送り出すためのメモです。 CGIから、バイナリ(特にファイル)データを送出する時は、以下の二点が通常のHTMLデータを送出するCGIと異なります。 HTTPヘッダで、Content-typeに"text/html"ではなく、対象ファイルのファイルタイプをセットします。 ファイルの内容はbinmodeで読み出し、出力します。 Content-typeにセットするファイルタイプ文字列は、File::MMagicモジュールを使うと簡単に取得できます。 以下は、カレントディレクトリの"logo.gif"ファイルのデータを送出する簡単なCGI例です。 #!perl use CGI::Carp qw(fatalsToBrowser); use CGI

  • Perlメモ/CGIモジュール - Walrus, Digit.

    フォームデコードなどの機能を持つ、CGI作成者のためのPerlモジュール。 CGIモジュールはHTMLやフォームの生成、フォームデータのパース、Cookieの取得と出力などの機能を持つモジュールです。 いささか重厚長大のきらいはありますが、CGI::Liteモジュールと異なりCGIモジュールは多くの環境でデフォルトインストールされていることなど、CGIモジュールを選ぶべき理由も多くあります。 CGIモジュールには多くのドキュメントが付属しています。 この内いくつかは、Perldoc.jpで和訳した文書を見ることができます。 http://perldoc.jp/docs/modules/ IBMのサイトには「便利なCGIスクリプト作成のためのヒント~CGI.pmモジュールを綿密に検討する」という文書があります。 いささか古いのですが、CGIモジュールを使ったファイルアップローダを検討するのに

  • Perlモジュール/LWP - Walrus, Digit.

    WWW上のデータ−主としてホームページ等−を取得し、処理するためのライブラリ。 正式名称は「libwww-perl」なのですが、Perl5で体が「LWP」という名前になっており、今ではこちらの呼び方も一般的に使われています。 http://search.cpan.org/~gaas/libwww-perl/ HTTPクライアントとしては、LWPの他にHTTP::Liteというモジュールもあります。 LWPの使用が難しい環境(CGIやPerlCE)を意識したもので、HTTPSやftp等に対応していないもののHTTPだけであれば、使い勝手の良いモジュールです。

  • Perlメモ/日本語の扱い - Walrus, Digit.

    Perlで日語を使用するとき、正しく動かなくなる代表的なケースは次の2点です。 日語を扱う時、文字コードを意識していない。 正規表現で、日語の文字列を使うとエラーが出る。 日語を扱う時には、文字コードを意識する必要があります。 代表的な文字コードには「7ビットJIS」「SJIS(シフトJIS)」「EUC(日語EUC)」「UTF8(Unicode)」があります。 厄介なのは、同じ言葉でも、文字コードによってコンピューター内部での表現が違うことです。 例えば、WebブラウザからSJISで送られてきた「塚」という言葉と、EUCコードのスクリプト中で設定した「塚」という言葉を比較すると「別物だよ」という結果が出ます。 こうした問題が起きないように、普通は、以下のことに気をつけてスクリプトを作ります。 スクリプトを書くときに、どの文字コードを使うか決めておく。 データの入出力(CGIの

  • Perlモジュール/HTTP::Lite - Walrus, Digit.

    HTTPヘッダーのみを取得するHEADコマンドは更新確認などに良く用いられますが、HTTP::Liteにこれを行うためのメソッドはないようです。 そこで乱暴ですが、$http->{'method'}を直接指定することでHEADを実行することができます。 use HTTP::Lite; $http = new HTTP::Lite; $http->{'method'} = 'HEAD'; $req = $http->request("http://www.cpan.org/") or die "Unable to get document: $!"; print $http->body(); 2.1.4版ではメソッドを明示的に指定できるようになったようです。 この項はいずれ改稿します。 HTTP::Liteモジュールを使った簡単なHTTPクライアントスクリプトの例です。 引数の展開や実行結

  • 1