use strict; use Regexp::Optimizer; my $string = "abcdefghijklmnopqrstuvwxy"; my @letters = split(//, $string); my $i = 0; my @regexes; for (my $j = 0; $j < scalar(@letters); $j++) { for (my $i = 0; $i < scalar(@letters); $i++) { if ($i != $j) { $regexes[$i] .= $letters[$j]; } else { $regexes[$i] .= '.'; } } } my $rl = Regexp::Optimizer->new; my $re = $rl->list2re(@regexes); print "re: $re\n"; my $r = qr/$re/; my $tomatch = "wwwabcdefghjjklmnopqrstuvwxyqq"; if ($tomatch =~ $r) { print "it matched\n"; }