for my $key ( keys %hash ) { while ($file2){ if ( / \a .*?\t # field 1 of file 2 .*?\t # field 2 of file 2 .*?\t # field 3 of file 2 .*?\t # field 4 of file 2 .*?\t # field 5 of file 2 .*?\t # field 6 of file 2 .*?\t # field 7 of file 2 .*?\t # field 8 of file 2 .*?\t # field 9 of file 2 .*?\t # field 10 of file 2 $key \t .*?\t # field 12 of file 2 .*?\t # field 13 of file 2 .*?\t # field 14 of file 2 .*\z # field 15 of file 2 /x) { do something...} else {next} }