perlのエラーコードを参照したりする

systemの結果コードは$?で参照できる

以下引用
変数 $@, $!, $^E, $? は Perl プログラムの実行中に
発生した、異なる種類のエラー情報を保持します。
変数はエラーを報告した副システムと Perl プロセスとの「距離」
の順番に並んでいます。
これらはそれぞれ、Perl インタプリタ、C ライブラリ、
オペレーティングシステム、外部プログラムによって検出された
エラーに対応しています。

$@ → evalのエラー
@! → システムコールのエラー closeとか
@^E → システムコールでエラーになったときの詳細な内容が格納されているらしい
$? → system終了ステータスとかCloseとかの終了ステータスを保持する

参考リンク
http://www.perldoc.jp/docs/perl/5.10.0/perlvar.pod.pod