Information

日記

G-ZONEのメインコンテンツとは関係のない日々を綴ったX-Virusの日記です。メインコンテンツが更新されていない時、X-Virus が何をしているか、ここを読んでもらえれば分かるように・・・というより、自分が何をしようと目論んでいるかといった備忘録として使う予定です。

< 2007 / 8 >



1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
最近の日記

Short Read: wanted 9999, got 0 2007-08-29

開発メモとして日記に記しておく。

このエラーは有名なPerlのCGI用ライブラリ「cgi-lib.pl」が表示しているもので、「9999バイトを得ようとしたけれど0バイトしか取れなかった」時にプラウザに送信するメッセージ。もう少し詳しく書くと、ブラウザは9999バイトをボディに記録し送信し、そのことを示すためにHTTPヘッダに「Content-length: 9999」と記述したが、サーバ側でcgi-lib.plの「ReadParse」で取り出す時に、このHTTPヘッダに記述されているはずのボディ部分を取得できなかったことを示している。

原因は単純。

テストのためにCGI.pmを併用したためだった。ReadParseを呼び出す前に「$q = new CGI;」と記述したために、ボディがクリアされてしまった。ReadParseを呼び出した時には、ボディが無くなってしまっていたのだ。ではこうする↓とどうだろうか。

&ReadParse;
$q = new CGI;

こんどはCGI.pm側でボディが取れない。つまり共存できないということだ。今までのルーチンと共存したい、言い換えるなら簡単にcgi-lib.plからCGI.pmに乗り換えるなら、ReadParseは使わずにこう↓記述すれば良い。

use CGI;
$q = new CGI;
%in = $q->Vars;