関数順 インデックス
目的別 インデックス

構文
 
 system 実行プログラムとコマンドライン・オプション
 system プログラム名 実行プログラムとコマンドラインオプション

返り値
 
 成功した場合に実行プログラムのステータス・コード
 失敗した場合-1

説明

  • プログラムを実行してステータス・コードを返します。
  • 要素が二つ以上の場合,一つ目が実行プログラム名,二つ目以降がコマンドラインオプションになります。
  • 要素が一つの場合,引数にシェルのメタ文字があるかどうかを調べて,メタ文字がある場合はシェルを介してプログラムを実行します。メタ文字がない場合は直接プログラムを実行します。
  • プログラム名を指定すると,実行プログラムをその名前で実行することができます。

使用例

コマンドnetstat -aを実行する
#!/usr/bin/perl
use strict;
use warnings;

my @command = ('netstat', '-a');

my $ret = system @command;
if ($ret != 0) {
  print "code[$ret]\n";
}
コマンドnetstatを実行して標準出力の内容をファイルresult.txtに書き込む
#!/usr/bin/perl
use strict;
use warnings;

my $command = 'netstat > result.txt';

my $ret = system $command;
if ($ret == 0) {
  print "success.\n";
} else {
  print "code[$ret]\n";
}
コマンドnetstat -aを実行して実行結果を詳しく調べる
#!/usr/bin/perl
use strict;
use warnings;

my @command = ('netstat', '-a');

system @command;

if ($? == -1) {
  # プログラム実行に失敗
  print "execute error.\n";
} elsif ($? & 127) {
  # プログラム異常終了
  printf "child process died with signal %d.\n", ($? & 127);
} else {
  # プログラムのステータスコード確認
  printf "status code %d.\n", ($? & 128);
}
※特殊変数$?を調べることで実行結果を詳しく調べることができます。