sub build_regexp { my $expr = join '|', map { "(?:To|is)\:\S+\@$_" } @_; eval { $expr = qr/$expr/i }; die "aaa!! $@ !!!" if $@; $expr; } #### my $writeFh = new FileHandle ">> myout.log"; my $is_subset = build_regexp(@allSubSets); while () { next unless /$is_subset/; print $writeFh <$fh>; }