use File::Find; find(\&wanted, 'upload_profile/'); sub wanted { #/\_$refine/ && print "$File::Find::name\n" && push @array, $_; /predictions\_\Q$refine\E/i && push @found, $_; } ####sort array of foud files### @find = sort { $a cmp $b } @found; #print "find: @find"; foreach my $file (@find) { print "file: $file\n"; open (LOOKUP, ") { ($name, $id) = (split m{\t})[3, 4]; print "id: $id\n"; $data{$file}{$id} = $name; } close (LOOKUP); } close (LOOKUP); open (dig_go, ") { ($id, $name, $file_disappeared, $enzyme_one, $target_one, $enzyme_two, $target_two, $enzyme_three, $target_three, $enzyme_four, $target_four, $enzyme_five, $target_five) = split (m/\t/); ##tried chomp on each if (exists $data{$file_disappeared}{$id}) {print "match\n";} }