in reply to Re^2: filter a file using an exclusion list
in thread filter a file using an exclusion list
my %stopwords = map { $_ => } <@excludes>;
If you print %stopwords in Data::Dumper you would have had:
$VAR1 = { '9999853' => '999986' };
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;
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: filter a file using an exclusion list
by coldy (Scribe) on Feb 13, 2011 at 23:29 UTC | |
|
Re^4: filter a file using an exclusion list
by coldy (Scribe) on Feb 13, 2011 at 23:38 UTC |