• ベストアンサー

Perlでのファイル処理について質問です.

あるディレクトリの中に a.pl b.pl c.pl d.pl e.pl という5つのファイルが入っているとします.そのとき,一気にこの5つのファイルを実行するにはどうすればいいのでしょうか? とても初歩的な質問かもしれませんがお願いします.実際は100個くらいファイルがあるのでひとつひとつ実行するのはとても面倒で...

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

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

>もしa_2.pl b_2.pl とかいうファイルもあったらプログラムも臨機応変に変えていかないといけませんよね? この点を心配する必要はありませんが(ちゃんと動きますよ)、 スクリプトの実行は順番に、前のスクリプトが終了してから次が実行される ということになりますよ? お手軽にはこんなかんじでしょうか。 use strict; my @files = grep {$_ !~ m/^$0$/} glob('*.pl'); #system qq{"perl $_ &"} for @files; system qq{start "dummytile" "cmd /c perl $_"} for @files; Unix環境だったらコメントアウトしている方を使ってください。

maguro141
質問者

補足

このプログラムでちゃんと動きました.どうもありがとうございます. 前のスクリプトが終わってから次が動くっていうことでよかったです.

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • SE-1
  • ベストアンサー率57% (26/45)
回答No.2

while(<*.pl>){ unless ($_ =~ /^batch/){ system("perl $_"); } } # 以上を bacth.pl として a.pl b.pl ... のあるディレクトリに保存し実行。 # で、どうでしょうか。

maguro141
質問者

お礼

ありがとうございます. もしa_2.pl b_2.pl とかいうファイルもあったらプログラムも臨機応変に変えていかないといけませんよね?

全文を見る
すると、全ての回答が全文表示されます。
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

一気に実行というのは並列に実行ということですか? 一つのスクリプトの終了を待たずに次々起動して行くのではなく。

maguro141
質問者

補足

並列に実行したいと思っています.

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 1つのファイルを複数のディレクトリにコピーする

    ディレクトリAの中に ディレクトリ B ディレクトリ C ディレクトリ D ディレクトリ E ファイル F があるとします.ここでファイルFをB,C,D,Eにコピーするにはどうコマンドを打てばよいのでしょうか?

  • perlでの、ファイル読み込みについて

    perlでの、ファイル読み込みについてお尋ねしたいことがあります。 a b c d e f g h i というような内容のテキストファイルがあったとき、この成分を「○行×列」の個別に読み込みたいのですが、 (C言語でいう、「A[0][0]=a A[0」[1]=b A[0][2]=c A[1][0]=d ・・・のように) どのようにしたらよいのでしょうか? perlに関しては全くの初心者なのですが、どうしてもperlを使わないといけない事情があり、 稚拙な質問かとは思いますが、どうぞよろしくお願いします。

    • ベストアンサー
    • Perl
  • 実行ファイルのパスの取得

    現在実行ディレクトリはAです。 また実行ファイルはtest.plでこれらは /A/B/test.pl という関係になっています。 test.plでこのようなパスを取得するにはどのようにしたら良いでしょうか? お分かりの方どうぞ教えてください。

    • ベストアンサー
    • Perl
  • Perlファイルのパラメータの変数名

    ----------- calc.pl -------- $a=1; $b=2; $c=$a+$b; print "$a+$b=$c"; というPerlファイルの$a,$bをcalc.pl内で固定値にするのでなく ----------- calc.bat -------- capl.pl 1 2 calc.pl 5 3 calc.pl 4 1 … のようにして、perlファイルのパラメータで任意に設定したいのですが、Perlファイルのパラメータは、どんな変数名になるのでしょうか。

    • ベストアンサー
    • Perl
  • アクセス権のことですが

    ディレクトリAの中にディレクトリBがあります。 Bの中にCというファイル(シェルスクリプト)があります。 Bのアクセス権は776で、Cのアクセス権は777です。 ユーザーD(一般ユーザー)が、ディレクトリAにいます。 DはBとCに対してその他ユーザですが、DはCを実行することが可能でしょうか。

  • 複数の処理の終了を待ちたい

    お世話になります。以下、教えていただけますでしょうか? バッチファイル(A.bat)を作成しています。 そのなかで、a,b,c,dの複数のプログラムを、前処理の終了を待たずに起動させ、a,b,c,d全てが終了するのを待って、eというプログラムを実行させたいのです。 --------------- start a start b start c start d --------------- この記述で、a,b,c,dが一度に起動することは確認できました。 しかし、この後の、「a,b,c,d全ての終了を待ってeを起動させる方法」というのが分かりません。 教えていただけますでしょうか? それとも、そもそも、バッチでは実現不可能なのでしょうか?

  • WINDOWSディレクトリにある変なファイル

    WINDOWSディレクトリに下のようなファイル名の ffc0b301_{B024DC81-E4E0-11D4-A3C1-8378F29C666C}.tmp tmpファイル(サイズが0)がたくさん(400個くらい)あるのですが、 これらは何なんでしょうか? 不要なら削除したいので・・・。

  • 複数ファイルへのVBAの処理について

    最近、ExcelのVBAを使うようになりました。 しかし、以下のような処理を同じフォルダ内の複数のファイルに対して一気にやりたいのですが、わかる方いらっしゃいませんか? 理想としては同じフォルダ内で50個くらいを選択して一気にやりたいのですが・・・。 ******************************* Sub FFT() Columns("A:A").Select Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _ FieldInfo:=Array(Array(0, 1), Array(18, 1)), TrailingMinusNumbers:=True Range("E8").Select Application.Run "ATPVBAEN.XLA!Fourier", ActiveSheet.Range("$B$1:$B$256"), _ ActiveSheet.Range("$C$1:$C$256"), False, False Columns("C:C").ColumnWidth = 38.38 Range("D1").Select Columns("D:D").ColumnWidth = 20.75 Range("D1").Select ActiveCell.FormulaR1C1 = "=IMABS(RC[-1])" Range("D1").Select Selection.Copy Range("D1:D256").Select ActiveSheet.Paste Range("E6").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "" Range("E7").Select End Sub

  • Perlでのファイル内データ処理方法について

    プログラミングを始めたばかりです。 Cygwin上でPerlを行っています。 下に示すように、計算プログラムの中にデータを記入し、そのデータを処理することは出来たのですが、外部のファイルを読みそのデータを処理する方法が分かりません。 # y = ax + bを求める @x=(1,2,3); @y=(1,4,9); for($i=0;$i<$n;$i++){ $A = $A + ($y[$i] * $y[$i]); $B = $B + ($x[$i] * $x[$i]);   ・   ・   ・ $a=・・・ $b=・・・ print("a=$a,b=$b"); パールファイル(.pl)内に @x=(1,2,3); @y=(1,4,9); のように記載すると、データが変わるたびにファイル内の数値を入れ替えないといけないと思うのですが、cygwinのウィンドウに、 $ ./lesson.pl 10 <data1.csv のように入力しEnterすると、ファイル内の数値を入れ替えないで指定したファイル(ここではdata1.csv)のデータが処理されると思うのですが、その場合パールファイルをどのように記述すればよいのでしょうか。また、cygwinのウィンドウにどのように入力すればよいのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • batファイルについて

    C:\work\a\a.txt C:\work\a\b.txt C:\work\a\c.txt C:\work\b\a.txt C:\work\b\d.txt C:\work\c\a.txt C:\work\d\a.txt C:\work\d\e.txt C:\work\d\f.txt 上記のようなファイルがあったとき 各ディレクトリのa.txtだけを残したいのですが (他のファイルは全部削除) どのようなbatファイルを作成すればよろしいのでしょうか。 すみませんが方法がありましたら教えてください。