dポイントプレゼントキャンペーン実施中!

ActivePerl を WindowsXP で使っている初心者です。
質問が既出でしたらすみません(検索ではかかりませんでした)。
回答が出ていましたら番号を教えていただけると助かります。

ネット上の情報を収集するスクリプトを書いています。
情報の種類は株価のようなものです。
複数の銘柄の株価の変動をなるべくリアルタイムに近い形で調べたいので、
似たようなスクリプトをいくつか別々のcmd.exe 上で走らせていますが、数が多いので一つずつ起動するのが非常に面倒です。

a.pl b.pl c.pl の3つを別々の窓で同時に起動するまとめスクリプト abc.pl のようなものが書けると助かるのですが。

慣れた人には簡単すぎるのかもしれませんが、
入門書の範囲では解説がないようですのでよろしくご教示ください。お願いします。

A 回答 (4件)

バッチファイルになりますが・・・



start perl a.pl
start perl b.pl
start perl c.pl

とかやると、いけるとおもいますよ。
    • good
    • 0
この回答へのお礼

うまく動きました。ありがとうございます。
start コマンドは MS-DOS のころにはなかったような気がしますが便利なものですね。
簡明な回答ありがとうございました。

お礼日時:2006/04/02 00:06

単純に


my @file_list = qw(a.pl b.pl c.pl);
foreach(@file_list){
system "perl $_";
}
では?

この回答への補足

回答ありがとうございます。これも簡明なやり方で参考になりそうです。

http://flex.ee.uec.ac.jp/texi/perl/perl_122.html
>system LIST'
>`exec LIST' と全く同じことをするが、
>違いは最初に fork を行い、
>親プロセスは子プロセスが完了するのを待つ点である。
とあるのですが、3つのスクリプトは平行して動くのでしょうか?
それとも exec を使う方がいいのでしょうか?
まだ実験していなくて申し訳ないのですが、
教えていただければ助かります。

補足日時:2006/04/02 10:02
    • good
    • 0
この回答へのお礼

やはり補足の件は自分で実験すべきでした。すみません。
今度自分でやってみます。
回答どうもありがとうございました。今後ともよろしくお願いします。

お礼日時:2006/04/03 00:03

1万を超える・・となると、上手にperlの中で


マルチタスク処理をしたほうがいいかもしれません。

httpアクセスには、libwww-perl を使ったほうが、一番高速で、かつ、確実ですが、

実質上のバックグラウンド処理としては、fork 等が有名です。

その他、ithreads を使うのも手でしょう。<一番パフォーマンスがいいかも

http://www.hyuki.com/dig/perlthread.html
    • good
    • 0
この回答へのお礼

結城さんの入門書は持っていますがわかりやすい本でした。
紹介していただいたページの記事で ithread の使い方の概略は理解できたと思います。
1つのキューを2つのスレッドで共有しているようですね。
なかなか巧妙な仕組みで勉強になりました。

今回の質問の件ではまだ応用できそうにありませんが、
また新しいスクリプトを書くときに参考にしたいと思います。

libwww-perl fork などの使い方も今後勉強したいと思います。

有用なアドバイスありがとうございました。

お礼日時:2006/04/02 09:51

a.plの中で3つの銘柄の情報を取得する、という選択肢はどうですか?

この回答への補足

回答ありがとうございます。
実は1万を超えるURLにアクセスして100ぐらいの銘柄を調べているんですが、
1万URLを一つのスクリプトで調べると時間がかかりすぎるのでいくつかのスクリプトで範囲を分割しているのです。
#1 さんのバッチファイルでうまく動くか試してみたいと思っています(#1 さんお礼は実験後書かせていただきます)。
技術的な興味から Perl のスクリプト中から別のスクリプトを複数平行して走らせる方法もあれば知りたいと思います。よかったらご教示ください。

補足日時:2006/04/01 22:29
    • good
    • 0
この回答へのお礼

#3 さんから補足の件について回答をいただけました。
#2 さんに改めてお礼申し上げます。ありがとうございました。

お礼日時:2006/04/02 09:45

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