my $dir = "directory/"; opendir ( DH, $dir ) || die "Cannot open $dir: $!.\n"; foreach ( readdir DH) { if (/\.fa$/){ my $file = $_; open (READ, "$file") || die "Cannot open $file: $!.\n"; # here's the problem while (){ if ( /^>/){ print $_; } } } close (READ); } close (DH);