use Regexp::Assemble qw( ) { my %patmap = ( '*' => '.*', '?' => '.', '[' => '[', ']' => ']', ); my ($norm) = map qr/[^$_]/, join '', keys %patmap; sub glob2pat { my $globstr = @_ ? $_[0] : $_; $globstr =~ s{($norm+|.)} { $patmap{$1} || "\Q$1" }sge; return "^$globstr$"; } } my $ignore_re = do { my $ra = Regexp::Assemble->new(); $ra->add(glob2pat($_)) for @list_regexps; $ra->re() }; while() { chomp; my( @cols ) = split(" ", $_); ... next if $cols[0] =~ $ignore_re; ... }