Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re: Unexpected behavior with "map"

by TomDLux (Vicar)
on Mar 13, 2014 at 03:14 UTC ( [id://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:

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.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others rifling through the Monastery: (3)
As of 2025-07-19 23:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.