• ベストアンサー

system から得た情報を変数に入れる方法

system から得た情報を変数に入れるには、どうしたらよいでしょうか。 $ls = system("ls -l"); これをスクリプトの中に置いてコマンドライン上から実行すると、そのまま、lsの結果が表示されてしまいました。 $ls は 0 を返します。 どうしたらよいのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • ysk6406
  • ベストアンサー率40% (237/589)
回答No.1

OS環境が書かれていないのでちょっと自信ありませんが、 Windows 用の ActivePerl と Jperl で確認しました。 ---------- system() を使わずに、   $ls = `ls -l`; (←逆シングルクオートで囲む) というのはどうでしょう? これで、ls -l の結果を $ls に入れることができます。 ただし、最後の改行もそのまま入ってくるので、これを取り除きたい 場合は、   chop ($ls = `ls -l`); とすれば、うまくいきます。 コマンド実行の結果(正常/異常)も知りたい場合は、 この後で $? 変数を参照すればいいでしょう。試しに   chop ($ls = `ls -l`);    ←パスをいろいろ変えてみて…   print "---\n",$ls,"---\n";   print "Status $?\n"; で、やってみて下さい。

tol
質問者

お礼

うまく値を得ることができました。 ありがとうございます。 とても助かりました。

関連するQ&A