他のファイルの数値からHTMLファイルを生成するはずのPerlスクリプトを開発しています。アイデアは、これらの値を持つファイルを読んでから別のHTMLファイルにリストすることです。数値を含むファイルは一定の時間ごとに更新され、その変更はHTMLに表示されます。PerlファイルI/Oの問題
これらの値は正しく読み込まれていますが(テストしましたが)、HTMLには表示されません。さらに、HTMLタグは印刷されません。
#!/usr/bin/perl
use IO::Handle;
use CGI qw(:standard);
print "Status: 200 OK", "\n";
print "Content-type: text/plain", "\n\n";
for(;;) {
open (my $input_file, "<", "/path/to/input/file/input_file.txt") || die "Unable to open the file: $!";
open (my $html_file, ">", "/path/to/html/file/index.html") || die "Unable to open the HTML file: $!";
print $html_file "<html><head><title>title</title><META HTTP-QUIV='refresh' CONTENT='10'></head><body>";
@lines = <$input_file>;
foreach my $line (@lines) {
print $html_file "<p>$line</p>";
}
print $html_file "</body></html>";
sleep 1;
close $input_file || die;
close $html_file || die;
}
スクリプトのみの反復のために最初ので動作します。これは私が書いたコードです。私が意味することは、HTMLタグと数値が出力ファイルに正しく出力されているということです。次に、反復2からNまで、ファイルは文字通り空ののままです。私はここで何が欠けているのか分かりません。最初の反復では動作しますが、次の反復では動作しないのはなぜですか?あなたはsleep
前にファイルをclose
する必要があり、事前
なぜCGIとIO :: Handleモジュールをロードしますか?それらを使用しないのはなぜですか?彼らはあなたが私たちに示していないプログラムの他の部分で使用されていますか? –
@Dave、私はautoflushを使用して、ループ内のファイルを開いて閉じることを決めました。 – tulians