Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

Re: Unexpected behavior with "map"

by TomDLux (Vicar)
on Mar 13, 2014 at 03:14 UTC ( #1078116=note: print w/replies, xml ) Need Help??

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:

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.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1078116]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (5)
As of 2021-04-15 16:32 GMT
Find Nodes?
    Voting Booth?

    No recent polls found