別のプログラムを実行する
system
は引数に指定した外部コマンドを実行します。
コマンドに与える引数もそのままリストとして与えます。
system( 'cp', '-r', 'directory', 'directory.backup' );
system
はコマンドを実行後、その終了ステータスを返します。
my $exit_status = system('ls');
print $exit_status, "\n"; # 0
通常、多くの UNIX コマンドであれば、成功すれば 0 を、失敗すれば 0 以外の値を返します。
system
によってコマンドの実行が失敗に終わった場合、例外を発出するようにしたいなら、
autodie
プラグマを使います。
use autodie qw(system);
system('dummy'); # 例外が発出される
ただし、use autodie qw(system)
は、内部的には
IPC::System::Simple
を使います。事前に IPC::System::Simple をインストールしておく必要がありますので注意してください。
system
によって実行されたコマンドの出力は、そのまま標準出力に出力されます。
system
はコマンドの出力をキャプチャーする機能はありません。
もし出力をキャプチャーしたいなら、バッククォートによるコマンド実行を使ってください。
my $output = `ls`;