- ベストアンサー
複数ファイルの読み込みについて
perl初心者です。 あるディレクトリから拡張子がdataであるファイルを全て読み込みたいのですが、方法がわかりません。 cshで書くと foreach arg (*.data) コマンド $arg のようになりますが、perlだと foreach $arg (@arg){ コマンド $arg となりますよね? 引数がリストなのでよくわかりません。 そもそもperlではできないのでしょうか? それともう一点ですが、ファイルオープンするときに foreachループの中で open(FILE, "$arg"); とすることは可能ですか? 上の質問と組み合わせて全てのファイルを開いて作業を行いたいので。 説明が下手ですいません。補足しますのでよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
while(<*.data>) { ## $_には、*.DATAなファイル名が格納されている。 open(F,"$_"); ##openする。 while(<F>) { ##読み出された内容が$_に格納されている。 print $_; ##出力してみる。 } } というのが最短コーディングです。
その他の回答 (1)
- 11th_style
- ベストアンサー率50% (45/90)
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); と言った感じで私はやってます。
お礼
回答ありがとうございました。 なんとかできました。
お礼
回答ありがとうございました。 foreachではなくwhileを使うのですね。