• ベストアンサー

複数ファイルの読み込みについて

perl初心者です。 あるディレクトリから拡張子がdataであるファイルを全て読み込みたいのですが、方法がわかりません。 cshで書くと foreach arg (*.data) コマンド $arg のようになりますが、perlだと foreach $arg (@arg){ コマンド $arg となりますよね? 引数がリストなのでよくわかりません。 そもそもperlではできないのでしょうか? それともう一点ですが、ファイルオープンするときに foreachループの中で open(FILE, "$arg"); とすることは可能ですか? 上の質問と組み合わせて全てのファイルを開いて作業を行いたいので。 説明が下手ですいません。補足しますのでよろしくお願いします。

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

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

while(<*.data>) { ## $_には、*.DATAなファイル名が格納されている。 open(F,"$_"); ##openする。 while(<F>) { ##読み出された内容が$_に格納されている。 print $_; ##出力してみる。 } } というのが最短コーディングです。

mintpil7
質問者

お礼

回答ありがとうございました。 foreachではなくwhileを使うのですね。

その他の回答 (1)

回答No.1

local *DIR; local *IN; my $dir = 'temp/'; #ディレクトリを開く opendir(DIR, $dir) || die "$dir: $!"; while(my $file = readdir(DIR)){   #関係のないファイルを飛ばす   next if($file !~ /?.data$/ || ! -f $file);   #ファイルを開く   open(IN, $dir . $file) || die "$file: $!";   while(<IN>){     #処理   }   close(IN); } closedir(DIR); と言った感じで私はやってます。

mintpil7
質問者

お礼

回答ありがとうございました。 なんとかできました。