Hey, it worked for the test case you gave :)
(grumble, grumble, inadequate test cases :( Even these test cases are inadequate, can you figure out why? )
#!/usr/bin/perl # http://perlmonks.org/?node_id=1196089 use strict; use warnings; $\ = $/; while(<DATA>) { chomp; my $dict = $_; $_ = <DATA>; my($head, $tail) = map length( $_ // '' ), split /\*/; s/\?/[$dict]/g; s/\*/ [^$dict ]* /; my $qr = qr/^$_/; $_ = <DATA>, $head <= length($_) && substr($_, $head, 0, ' '), $tail && $tail <= length($_) && substr($_, -$tail, 0, ' '), print $_ =~ $qr ? "YES" : "NO" for 1 .. <DATA>; } __DATA__ ab a?a 3 aaa aab aaac ab *a?a 3 aaa aab caaa ab a?a* 3 aaa aab aaac b aaaaaaaaaaaaaaaaaaaaaaa*aaaaaaaaaaaaaaaaaa 1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b aaaaaaaaaaaaaaaaaaaaaaa*aaaaaaaaaaaaaaaaaa 1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b *aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b *aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa* 1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa* 1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
In reply to Re^3: the case where regex seems to work slower
by tybalt89
in thread the case where regex seems to work slower
by rsFalse
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |