#!/opt/local/bin/perl5.10.0 use 5.010; use strict; use warnings; use constant { EXCLUDE_TXT => '2.txt', DATA_TXT => '1.txt' }; my %exclude = do { open my $in, '<', EXCLUDE_TXT or die "Cannot open exclusion list: $!"; my $_; map { chomp; $_ => 1 } <$in>; }; do { open my $in, '<', DATA_TXT or die "Cannot open data file: $!"; while (my $_ = <$in>) { my $flop; print if ( (/^xxx(\d{8})/ && !$exclude{$1}) ... ($flop = (/^xxx(\d{8})/ && $exclude{$1})) and !$flop ); } }