Perl 一个脚本,可以告诉多少行每秒

Perl 一个脚本,可以告诉多少行每秒,perl,bash,unix,Perl,Bash,Unix,我不知道如何解释这一点,但我试图告诉你每秒有多少行被添加到一个列表中。我想用Perl来寻找一个解决方案,但我想不通 即使它在bash中也能工作。line-counter.pl #!/bin/perl my $last_time = time(); my $line_count = 0; while (<>){ if ( time() > $last_time ){ $last_time = time(); print $line_count . "\

我不知道如何解释这一点,但我试图告诉你每秒有多少行被添加到一个列表中。我想用Perl来寻找一个解决方案,但我想不通

即使它在bash中也能工作。

line-counter.pl

#!/bin/perl

my $last_time = time();
my $line_count = 0;
while (<>){
   if ( time() > $last_time ){
     $last_time = time();
     print $line_count . "\n";
     $line_count = 0;
   }
   $line_count++;
}
#/bin/perl
我的$last_time=time();
我的$line\u count=0;
而(){
如果(时间()>$上次时间){
$last_time=time();
打印$line\u count。“\n”;
$line_count=0;
}
$line_count++;
}

用法:tail-f/the/file.log | perl-w line counter.pl

这个“列表”是一个文件吗?实际上它是zaid,只是一个每秒添加行数的随机文件,我想计算一下。这个文件有多大?它是否会更改名称或在某个时候被截断?它不会更改名称,文件目前有61k行,但很快将增加到400-4000万行。您根本没有尝试解释您的问题。“每秒向列表添加多少行”可能意味着很多事情,
Zaid
发现您的列表实际上是一个文件(根据您的说法,它“只是一个随机文件”)。如果“在bash中它可以工作”,那么请显示您正在工作的bash脚本。这工作得很好,谢谢。这取决于循环至少每秒执行一次,这在负载较重的机器上可能不正确。为了正确起见,您需要将当前行计数除以
time()
$last\u time
之间的差值。是否有人认为他们可以帮助找到解决方案而不必跟踪文件。
#!/bin/perl

my $last_time = time();
my $line_count = 0;
while (<>){
   if ( time() > $last_time ){
     $last_time = time();
     print $line_count . "\n";
     $line_count = 0;
   }
   $line_count++;
}