繁体   English   中英

perl脚本不断从STDIN读取数据

[英]perl script keeps reading data from STDIN

我有2个脚本用于任务。

第一个输出数据行(以RT / LF终止)到STDOUT。

第二个保持从STDIN读取数据,以便通过以下方式进一步处理:

use strict; 
my $dataline; 
while(1) { 
    $dtaline = ""; 
    $dataline = <STDIN>; 
    until( $dataline ne "") { 
        sleep(1); 
        $dataline = <STDIN>; 
    }

    #further processing with a non-empty data line follows   
} 

print "quitting...\n";

我使用管道将输出从第一个重定向到第二个:perl scrt1 | perl scpt2。

但是我对这两个scpts的问题是,如果在初始加载后没有数据,第二个scpt看起来就像第一个scpt的初始数据行一样。

不知道有没有相似经历的人可以帮助一下吗?

谢谢。

你似乎把它变得比它需要的复杂得多。 Perl通常使用阻塞I / O,这意味着在完整的输入行之前<STDIN>将不会返回。

use strict; 
use warnings; # use this too

while (my $dataline = <STDIN>) {
  #further processing with a non-empty data line follows   
}

print "quitting...\n";

当没有更多输入时(在您的示例中,当scrt1退出时), <STDIN>返回undef ,这将退出while循环。 (Perl为while ($var = <>)循环添加了一个隐式defined测试。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM