プロが教えるわが家の防犯対策術!

perl初心者です。

あるディレクトリから拡張子がdataであるファイルを全て読み込みたいのですが、方法がわかりません。
cshで書くと
foreach arg (*.data)
コマンド $arg

のようになりますが、perlだと
foreach $arg (@arg){
コマンド $arg

となりますよね?
引数がリストなのでよくわかりません。
そもそもperlではできないのでしょうか?


それともう一点ですが、ファイルオープンするときに
foreachループの中で
open(FILE, "$arg");
とすることは可能ですか?
上の質問と組み合わせて全てのファイルを開いて作業を行いたいので。

説明が下手ですいません。補足しますのでよろしくお願いします。

A 回答 (2件)

while(<*.data>)


{
## $_には、*.DATAなファイル名が格納されている。
open(F,"$_"); ##openする。
while(<F>)
{
##読み出された内容が$_に格納されている。
print $_; ##出力してみる。
}
}

というのが最短コーディングです。
    • good
    • 4
この回答へのお礼

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

お礼日時:2005/05/20 15:07

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);


と言った感じで私はやってます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/05/20 15:06

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

このQ&Aを見た人はこんなQ&Aも見ています