my @regexes = ('hello(\w+)','foo(\d+)','zubbble(.*)'); my $re = join '|', sort { length $b <=> length $a } @regexes; $re = "(?:$re)"; print "Matched!\n" if 'foo123' =~ /$re/;