$VAR1 = {
'9999853' => '999986'
};
And this is not what you want! In the map, you are failing to assign a value with each key. You could state that as:
my %stopwords = map { $_ => 1} @excludes;
Here I am assigning a value of '1'. It conveniently then tests true when you are looking for stopwords. I also removed the angle brackets around @excludes in your code, (that would be a glob, not what you want).
Altogether, it could be solved like this:
#!/usr/bin/perl
use strict;
use warnings;
use 5.012;
use Data::Dumper;
my $large =<<EOF;
9999853 5615 4 148656321
999986 5615 14 94873609
9999883 5615 4 860669
9999929 5615 4 73689618
9999931 5615 4 31286083
9999944 5615 4 148596445
999995 5615 10 78405504
9999963 5615 4 84291761
9999966 5615 4 5978256
9999979 5615 4 135953341
EOF
my $excludes =<<EOF;
9999853
999986
EOF
open my $fh1, "<", \$excludes or die $!;
my %stopwords = map {chomp; $_ => 1} <$fh1>;
close $fh1 or die $!;
open my $fh2, "<", \$large or die $!;
while( <$fh2> ){
my ($test) = /^(\d+)/;
# if $test is in the hash
# then $stopwords{ $test } == 1 or true
print unless $stopwords{ $test };
}
close $fh2 or die $!;
#print Dumper \%stopwords;
|