use strict;
use warnings;
use re q{eval};
my %alt = ( this => q{that}, that => q{this} );
my $re = do
{
local $" = q{|};
qr{(?x) ( @{ [ keys %alt ] } ) .* (??{ $alt{ $1 } }) };
};
print
sprintf( q{%-9s: }, $_ ),
m{$re}
? qq{matched\n}
: qq{did not match\n}
for qw{ thisthat thatthis thathis thisnthat thatnthis };
####
thisthat : matched
thatthis : matched
thathis : did not match
thisnthat: matched
thatnthis: matched
####
use strict;
use warnings;
use re q{eval};
my %alt = ( this => q{that}, that => q{this} );
my $re = do
{
local $" = q{|};
qr{(?xi)
( @{ [ keys %alt ] } )
.*
(??{ qr{(?xi) $alt{ lc $1 } } })
};
};
print
sprintf( q{%-9s: }, $_ ),
m{$re}
? qq{matched\n}
: qq{did not match\n}
for qw{ thisthat thatthis thathis thisnthat thatnthis ThISnthAt };
####
thisthat : matched
thatthis : matched
thathis : did not match
thisnthat: matched
thatnthis: matched
ThISnthAt: matched