Hey Monks. I found an anomaly, at least I think it is. Consider the following code:
#!/usr/bin/perl
use strict;
use warnings;
my $str = '/path/to/f(il)e';
(my $name = $str) =~ s{.*/}{}; # basename
(my $path = $str) =~ s{$name}{};
print " str = $str\n";
print "name = $name\n";
print "(unescaped) path = $path\n";
($path = $str) =~ s{\Q$name\E}{};
print "(escaped) path = $path\n";
That produces the following output:
str = /path/to/f(il)e
name = f(il)e
(unescaped) path = /path/to/f(il)e
(escaped) path = /path/to/
The first substitute (basename) worked. The 2nd, the one that was supposed to isolate the path part of the string does NOT work because there are parentheses in $name.
I worked around it with the \Q...\E trick, but I want to know why parens in the variable screwed up one substitute but not the other one