なぜあなたscript
はまったく使う必要があるのですか?シェルスクリプトはインタラクティブですか? 有効な TTY が必要ですか? 有効な TTY を必要としない非対話型のバッチ ジョブである場合は、それをパイプとして開き、ファイル ハンドルを介して出力を処理することをお勧めします。
例えば:
open my $cmd_handle, "-|", $command, @args
or die "Could not run $command @args: $!";
foreach my $line ( <$cmd_handle> )
{
# ... process the command output here ...
}
close $cmd_handle;
これには、Perl スクリプトがコマンドの出力を発生時に処理するという利点があります。本当に最後まで処理を延期する必要がある場合は、すべての出力を配列に丸呑みしてから、後で処理することができます。
open my $cmd_handle, "-|", $command, @args
or die "Could not run $command @args: $!";
my @cmd_output = ( <$cmd_handle> );
close $cmd_handle;
foreach my $line ( @cmd_output )
{
# ... process the command output here ...
}
script
上記の制限 (非対話型であり、有効な TTY を必要としない) を満たしている場合は、コマンドを実行するよりも優れているはずです。ほとんどのバッチ スクリプトは、これらの制限を満たしています。