簡體   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