Perlのsystem関数で外部コマンドを呼ぶときのエラーキャッチ

バッククォートで呼ぶとエラーが起きたどうか分からないのでsystem関数を使う。

my $cmd = 'ls test_dir';
if( (system "$cmd") != 0){
      die "Error detected\n";
}

エラーが起きたらdieする関数

sub run_cmd{


      my ($cmd) = @_;
      print "$cmd\n";


      if( (system "$cmd") != 0){
            die "Error detected\n";
      }


      return 0;
}