CGI-BBS > CGI > Perl > gzipについて教えて下さい。


カレッヂ
カレッヂ


質問者 yu-G#  投稿日 4/20(土) 04:36:32
WEBサーバ(Red Hat Linux)上のgzipで圧縮されたファイル(data.txt.gz)を、ブラウザ
(IE5.5)で読み込むために、現在以下のようなスクリプトを使っています。

#!/usr/local/bin/perl

print "Content-type: text/html\n";
print "Content-encoding: gzip\n\n";

open(IN, "data.txt.gz");
print while (<IN>);
close(IN);

また、サーバ上で圧縮されていないファイル(temp.txt)を、圧縮した状態で送信する時に
はこのように書いています。

#!/usr/local/bin/perl

print "Content-type: text/html\n";
print "Content-encoding: gzip\n\n";

open(TEM, "/bin/gzip -1 -c temp.txt |");
print <TEM>;
close(TEM);

それぞれのスクリプトの動作は何の問題も無いのですが、この2つを一緒に実行しようと
して以下のように書くと、失敗します。

#!/usr/local/bin/perl

print "Content-type: text/html\n";
print "Content-encoding: gzip\n\n";

open(TEM, "/bin/gzip -1 -c temp.txt |");
print <TEM>;
close(TEM);

open(IN, "data.txt.gz");
print while (<IN>);
close(IN);

Perlには、まだあまり慣れていないので、どこが間違っているのか全然分かりません。
御存知の方がいらっしゃいましたら、是非教えて下さい。よろしくお願いします。
回答者 しあわせのツボ  [削除]  投稿日 4/20(土) 12:56:18
data.txt.gzとtemp.txtの2ファイルを一度に送ろうとしていますよね。
これでは2つのファイルが1つに連結された状態で届きます。
そもそもHTTPはリクエスト1回につきファイル1つが原則ですし、そこを何とかしたとしても、ファイルの区切りすら宣言していないのはgzipの仕様として正しいのでしょうか?
質問者 yu-G#  [削除]  投稿日 4/20(土) 14:17:31
う〜ん、2つのファイルだとダメなんでしょうか。
「data.txt.gz」の中身と一緒に簡単なメッセージを表示させるだけでもいいんですが・・・。
普通に「print "hello world!";」とか入れてもうまくいかないので・・・。

やっぱり、フレームを使ったりして画面を分割して表示させた方がいいんでしょうか?

返信(回答)する


Web裏技