プロが教えるわが家の防犯対策術!

system関数とqx演算子(バッククォート文字列)の違いって何なのでしょうか?
私は同じものという認識なのですが、こんな時はsystem、こういう場合はqxという使い分けが必要なのでしょうか?
「絶対にこうでなければならない」というものだけではなく、「こういう場合はこっちが推奨されている」などでも結構です。
何か情報がありましたら、お願い致します。

A 回答 (1件)

バッククオート演算子は、コマンドの STDOUT を配列に入れる事が可能です。



my @ls = `ls`;

その点、system (|| exec) は、コマンドの STDOUT は出力されます。
system から返される値は、コマンドの終了ステータスです。

my $status = system('ls');

なので、コマンドの STDOUT を出力せずに、プログラム内で利用したければバッククオート、コマンドの STDOUT は出力して、終了ステータスだけ知りたい (別に知らなくていい場合も含む) ような場合は system、STDOUT も終了ステータスも必要ない場合は、

`ls`;
system('ls > /dev/null');

のどちらでもいいと思います。
    • good
    • 0
この回答へのお礼

なるほど、qxもsystemも渡されたコマンドを実行して戻ってくるのは同じだけど、返る値が異なるんですね。
これからは用途に応じて使い分けたいと思います。
どうもありがとうございました。

お礼日時:2002/10/04 13:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!