use strict; my $mydir="data"; opendir DIR, "$mydir"; open OUT, ">list.txt"; my @dir=grep(/.txt$/, readdir(DIR)); closedir(DIR); print "@dir/n"; foreach my $dir (@dir){ open IN, "<$mydir/$dir"; undef $/; while (){ if (/class\=\"report\".*\&id=1\"\>(.*?)\<\/a.*\"report\"\swidth.*\>(.*?)\<\/td\>$/si){ my $ge=$1; my $pos=$2; print OUT $dir, "--", $ge, "--", $pos; } } }