my $bigpattern = '(' . join('|',@patterns) . ')'; $b = qr/\Q$bigpattern\E/; while (my $inputline = ) { if ($inputline =~ /$b/io) { ## Logic goes here } }