perl のsystem関数を使って外部コマンドを実行する時、外部コマンドの戻り値を取得するには、ちょっと注意が必要。
Perlの組み込み関数 system の翻訳 - perldoc.jp
返り値は、wait が返すプログラムの exit 状態です。 実際の exit 値を得るには 右に 8 ビットシフトしてください
上記perldocの通り、外部コマンドの戻り値を取得するには、system関数が返した値を右に 8 ビットシフトする必要がある。
以下にテストスクリプトとその結果を示す。
use strict; use warnings; my $rc = system("test.bat"); # test.bat (外部コマンド)は 1 を返す。 print "Return code = $rc\n"; # rcは 256 になる。 $rc = $rc >> 8; # ★8bit右にシフト print "Return code = $rc\n"; # rcは 1 になる。これは外部コマンドの本当の戻り値。