- ベストアンサー
system関数とqx演算子の違いについて
system関数とqx演算子(バッククォート文字列)の違いって何なのでしょうか? 私は同じものという認識なのですが、こんな時はsystem、こういう場合はqxという使い分けが必要なのでしょうか? 「絶対にこうでなければならない」というものだけではなく、「こういう場合はこっちが推奨されている」などでも結構です。 何か情報がありましたら、お願い致します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
バッククオート演算子は、コマンドの STDOUT を配列に入れる事が可能です。 my @ls = `ls`; その点、system (|| exec) は、コマンドの STDOUT は出力されます。 system から返される値は、コマンドの終了ステータスです。 my $status = system('ls'); なので、コマンドの STDOUT を出力せずに、プログラム内で利用したければバッククオート、コマンドの STDOUT は出力して、終了ステータスだけ知りたい (別に知らなくていい場合も含む) ような場合は system、STDOUT も終了ステータスも必要ない場合は、 `ls`; system('ls > /dev/null'); のどちらでもいいと思います。
お礼
なるほど、qxもsystemも渡されたコマンドを実行して戻ってくるのは同じだけど、返る値が異なるんですね。 これからは用途に応じて使い分けたいと思います。 どうもありがとうございました。