Posted by 小牧徹夫 on December 10日 (1996年) 17時40分41秒:
Perlで~/public_htmlのサブディレクトリのファイルをtar/gzでアーカイブして返すようなCGIを作りたいのですが、うまくいきません。
$DIRにサブディレクトリ名が入っているとして、
chdir "$HOME/public_html/$DIR";
print "Content-Type: application/x-gzip\n\n";
open(ARCHIVE, "/usr/sbin/tar cf - .| /opt/gnu/bin/gzip |");
while (read(ARCHIVE, $_, 1)) { print; }
という風にしているのですが、空のファイル(0個のファイルを含んだ、形式的には正しいgzipファイル)が返ってきてしまいます。
open文のtarのところをlsなどとすると意図した通りにディレクトリ一覧のgzipされたものが返ってくるので、パイプのところがまずいのかと思って頭に「$| = 1;」などを入れても改善されません。
何が問題なのでしょうか?