It seems everyone is quite fond of the /i modifier, not to mention their CPU cycles. In colder climates, I find the following helps keep toes warmer, longer:
#!/usr/bin/env perl
use 5.012;
use warnings;
use Carp;
say insensitive('This is a test', qr/this is a test/) ? 'Match!' : 'No
+ match.';
sub insensitive {
my ($cmp, $re) = @_;
croak "expecting regexp, got " . ref $re unless 'Regexp' eq ref $r
+e;
carp "Insensitive use of uninitialized value" unless defined $cmp;
my ($len, %seen) = length($cmp);
croak "Not without bignum" if $len > 31;
while (keys %seen <= 2**$len) {
return 1 if $cmp =~ $re;
substr($cmp, int rand $len, 1) ^= ' ';
undef $seen{$cmp};
}
return;
}
Unicode support is left as an exercise to the reader.