我有一些 Perl 脚本,可以流式传输输入文件并实时解析它。
在 Strawberry Perl 版本 5.32.1.1 之前它运行良好,但在 5.38.0.1 版本中不再运行。
我写了一个显示问题的基本示例:
#!/usr/bin/perl -w
use strict;
use warnings;
my $IN_STREAM;
open( $IN_STREAM, "<", "file_in.txt" ) or die "Fail to open file_in.txt";
while (1) {
while ( !($_ = <$IN_STREAM>)) {
sleep(1);
}
print "$_";
}
当我使用版本 5.32.1.1 运行此脚本时,每次更新 file_in.txt 时我都可以看到打印内容。
但在 5.38.0.1 中,未检测到 file_in.txt 中的更新。
有不同的方法来做我想做的事吗?
使用File::Tail。
my $tail = File::Tail->new( name => "file_in.txt" );
while ( defined( my $line = $tail->read() ) ) {
print $line;
}