• ベストアンサー

perlスクリプト内でシェルコマンドを実行するには??

タイトル通りなのですが、perlスクリプト内でシェルコマンドを実行させる方法が分からなく、困っています。 実行したいシェルコマンドはUNIXのcrontab なのですが・・。 また、perlスクリプト内以外でシェルコマンドを実行する方法はあるのでしょうか?? どなたか分かる方いらっしゃいましたらご教授いただけると幸いです。よろしくお願いします。

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

  • ベストアンサー
回答No.2

system() 関数とバッククォート(`...`の形式)と open() による方法、それと fork 後に子プロセスで exec する方法があります(但しこれはUNIX系OS以外では正常動作するかどうか分かりません)。 system() 関数を使う場合はコマンドラインから打ったのとほぼ同じです。バッククォートの場合はそのコマンドが標準出力に出力した内容を文字列として受け取れます(これはUNIX系OSでよく使われるシェルの動作とほぼ同じということです)。open() でやる場合はコマンドに対する標準入力を与えるか、またはコマンドからの標準入力を受け取れます。これは open(FP, '| command arg ...') または open(FP, 'command arg ... |') のように最初か最後に | を入れてオープンし、その後それに対して print するか <FP> のような方法で読むかします。fork(), exec() の場合はその後の入出力の接続は(pipe()と組み合わせて使うなどして) 自由に行なえます。 で、やることが crontab への設定ということならば open 使った方法が楽なんじゃないでしょうか。但し crontab -l をやった後に crontab で追加する場合はその間に他のプロセスが編集をしてしまうかも知れないので注意が必要です。(全部書き変えていいなら open(F, '| crontab'); でオープンして print F ...; でただ書いてしまえばいいと思いますが)

fortunefeeling
質問者

お礼

回答してくださった方ありがとうございます。参考になりました。しかし未だうまく作動しません・・。新規スレでもう一回質問してみます。ありがとうございました。

その他の回答 (1)

  • hara_peko
  • ベストアンサー率28% (11/38)
回答No.1

my $result = `ここにコマンド`; で試してみて下さい。

関連するQ&A