in reply to regex matching array values with foreach

You probably want to use a hash instead. Create a key for each zipcode by assigning it the value of 1, then see if the zipcode you're checking has a key in the hash.

#!/usr/bin/perl use strict; use warnings; my $file = "zipcodes.txt"; my %zipcodes; open (my $fh, '<', $file) or die "Can't open $file for read: $!"; while (<$fh>) { chomp; $zipcodes{$_}++; } close $fh or die "Cannot close $file: $!"; while (chomp( my $line = <STDIN> )) { print "found $line\n" if $zipcodes{ $line }; } __END__
Don't forget to chomp the lines as you read them from the file, and from STDIN.

Edit: If you want to be lazy, you can use a module to open, read and close your file, do the chomping for you and put the lines in a list. In the snippet below we use Path::Tiny, which allows us to write one line to return a list of zip codes and map them into the hash:

use Path::Tiny; my $file = 'index.txt'; my %zipcodes = map { $_, 1 } path( $file )->lines({chomp => 1});
More simply, this is how to get the list of chomped lines:
my @lines = path( $file )->lines({chomp => 1});

Hope this helps!

The way forward always starts with a minimal test.

Replies are listed 'Best First'.
Re^2: regex matching array values with foreach
by jasper8989 (Initiate) on Sep 09, 2015 at 07:09 UTC

    Thanks guys! Chomping the newline did it, nice one!

    Jasper