use autodie qw(open close); open my $fip, '<', 'file-1'; open my $fop, '<', 'file-2'; my %record_id; while (my $line = <$fop>) { chomp $line; $record_id{$line} = 1; } close $fop; while (my $line = <$fip>) { my @token = split(/-/, $line, 2); if ( exist $record_id{$token[0]} ) { print $line; } } close $fip;