Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
システム コマンドを実行して、特定のパターンに一致する出力を待っています。
open(my $fh, '-|', 'echo line 1; sleep 20; echo line 2'); while (<$fh>) { print && last if /1/; } close $fh;
これは表示されline 1てループを離れますが、外部コマンドが完了するまで終了しません。
line 1
必要な出力に一致した直後にスクリプトを終了させるにはどうすればよいですか?
TERMPID にシグナルを送信し、待機せずにファイル ハンドルを閉じることができます。
TERM
my $pid = open(my $fh, '-|', 'echo line 1;sleep 5; echo line 2') or die $!; while (<$fh>) { print && last if /1/; } kill TERM => $pid; close $fh;