use strict; use warnings; my @sites=qw/ www.yahoo.com www.google.com www.comcast.com /; my @bad_log; my @good_log; my %bad_hash = (); foreach my $bad_site (@sites) { $bad_hash{$bad_site} = 1; } while (my $line = ) { my $www = (split / /,$line)[5]; $www =~ s/---*//; if (exists $bad_hash{$www}) { push(@bad_log, $line); } else { push(@good_log, $line); } } print "\nBad lines are:\n"; foreach (@bad_log) { print; } print "\nGood lines are:\n"; foreach (@good_log) { print; } __DATA__ X456 TV-yes DB-no 123.12.23.45 dealio3 www.google.com-------- FX-yes d53 Y-03 X123 TV-yes DB-yes 34.154.43.21 dealio1 www.ask.com-------- FX-no d01 Y-03 X412 TV-no DB-no 192.365.25.23 rayovac2 www.microsoft.com--- FX-yes d13 Y-07