open(my $master_file, '<', "file1") or die "couldn't open master"; my %valid = map { chomp; ($_ => 1) } <$master_file>; close $master_file; open(my $data_file, '<', "file2") or die "couldn't open data file"; while (<$data_file>) { my ($key) = split /\s/; print if $valid{$key}; } close $data_file;