perlで、ウインドウズのexeや、batファイルを起動させる方法を教えてください。引数を渡す方法とかも。

回答の条件
  • 1人5回まで
  • 登録:2006/05/08 00:01:01
  • 終了:2006/05/08 08:16:23

回答(4件)

id:tarchan No.1

たーちゃん回答回数200ベストアンサー獲得回数22006/05/08 00:56:26

ポイント23pt

http://flex.ee.uec.ac.jp/texi/perl/perl_110.html

以下のように書けば引数付きで実行できます。

exec '/bin/echo', 'Your arguments are: ', @ARGV;

id:noboru No.2

noboru回答回数94ベストアンサー獲得回数02006/05/08 01:53:04

ポイント23pt

終了を待つ場合は system()、現在動いている perl のプログラムと入れ替える場合は exec()、標準出力を受け取りたいとか標準出力を渡したい場合は open() でパイプを使えばできます。

あと、同じプログラムを途中で2つのプロセスに分割したい場合は fork() を使います。fork()→子プロセスの方で exec() とやるとバックグラウンドでプログラムを動かせます。(更に pipe() を使って標準入出力の繋ぎ直しなどをすると open() のパイプを使った入出力の繋ぎ直しと同じことができます。この辺のきめ細かい操作をしたい場合は UNIX 関係のプログラミングの本を見た方がわかりやすいかも知れません)。

id:mfjsk No.3

mfjsk回答回数9ベストアンサー獲得回数02006/05/08 03:06:26

ポイント22pt

system関数か、exec関数を使います

system ('c:\winnt\notepad.exe d:\test.txt');

のようにDOSプロンプトで入力する文字をそのまま引数も含めて''で囲って入力すれば良いです。


exec も使い方は同じですが、execの場合、exeファイルを実行した段階で、perlが終了してしまいます。

systemの場合、perlがbatファイルやexeファイルが終了するのを待ちます。

いくつものexeを実行したいとか、exeを終了した後にも実行させたいperlがあればsystemを使っています。

id:villain No.4

villain回答回数174ベストアンサー獲得回数122006/05/08 04:03:09

ポイント22pt

プロセス制御やシステムコールに関する関数


Win(ActivePerl)環境では実装されていないものもいくつか

ありますが、基本的にexecかsystemを使用します。

execは実行すると制御が返ってきません。

systemは返ってきます。


また、バッククオートで実行する方法も...。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません