http://qs321.pair.com?node_id=1078116


in reply to Unexpected behavior with "map"

Having regexes like s/\/etc\/// is referred to as Leaning Toothpick Syndrome, aka LTS.

You already know you can use your preferred delimiter with qw; same thing with s///. YOu can even use delimiters that come in pairs, to differentiate the search part from the replace part:

s{/etc/}{}
I generally like to move the search string and the replace components out of the regex operation, so the operation is just operating on predefined variables.
my $search_for = qr{/etc/}; my replace_with = qr{}; s{$search_for}{$replace_with}

But in this case, you're dropping a single, identical prefix from all the paths. Perhaps that's simply a contrived example for the post. But in such a situation, I would use substr() to discard the prefix, which I already know the length of. While basename() is a more robust, reliable, portable solution, you could also use rindex to locate the rightmost '/' separator, and use substr to extract what comes after that.

As Occam said: Entia non sunt multiplicanda praeter necessitatem.