Я разрабатываю скрипт Perl, который должен генерировать HTML-файл из числовых значений из другого файла. Идея состоит в том, чтобы прочитать файл, который имеет эти значения, а затем перечислить их в отдельном файле HTML. Файл, содержащий числовые значения, обновляется через определенный промежуток времени, и эти изменения следует видеть в HTML.Проблема ввода-вывода файла Perl
Несмотря на то, что эти значения правильно прочитаны (я их протестировал), они не печатаются в 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 файл остается буквально пустым. Я не вижу, что мне здесь не хватает. Почему он работает на первой итерации, но не в следующих?
Заранее спасибо
Почему вы загружаете модули CGI и IO :: Handle, но не используете их? Используются ли они в других битах программы, которые вы нам не показали? –
@Dave, я использовал autoflush перед тем, как решить открыть и закрыть файл в цикле. – tulians