Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
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 admiring the Monastery: (5)
As of 2024-04-18 09:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found