DON’T ASK WHY but…
I have a regex that needs to be case insensitive if run on windows BUT case sensitive when run on *nix.
Here is an example snippet of what I am kind-of doing at the moment.
sub relative_path
{
my ($root, $path) = @_;
if ($os eq "windows")
{
# case insensitive with regex option 'i'
if ($path !~ /^\Q$root\E[\\\/](.*)$/i)
{
print "\tFAIL:$root not in $path\n";
}
else
{
return $1;
}
}
else
{
# case sensitive
if ($path !~ /^\Q$root\E[\\\/](.*)$/)
{
print "\tFAIL:$root not in $path\n";
}
else
{
return $1;
}
}
return "";
}
Argh! The repetition hurts my OCD but my perl-fu is weak. Somehow I want to make the regex option ‘i’ for case-insensitive conditional but I don’t now how?
You can create patterns and store them in scalars using the
qroperator:This might not be 100% perfect, but hopefully you should get the idea.
Make sure to check out the section “Quote and Quote-Like Operators” in perlop.
EDIT: Okay, here’s a DRY solution since people are complaining about it.