Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Extra backlash getting added to string

by newperldeveloper (Sexton)
on Jul 15, 2021 at 16:57 UTC ( #11135039=perlquestion: print w/replies, xml ) Need Help??

newperldeveloper has asked for the wisdom of the Perl Monks concerning the following question:

I am trying to replace the underscore with backslash underscore. However it is adding an extra backslash to the string.
my $file="Bob_Smith"; $file =~ s/_/\\_/g;
Bob_Smith becomes Bob\\_Smith.

Replies are listed 'Best First'.
Re: Extra backlash getting added to string
by Fletch (Chancellor) on Jul 15, 2021 at 17:14 UTC

    Erm, no.

    $ perl -E 'my $file="Bob_Smith"; $file =~ s/_/\\_/g; say $file' Bob\_Smith

    You're doing something wrong; this isn't the actual code you're using, or you're not showing us something (for instance if you're using Data::Dumper to print things out it's going to show you the string as you'd give to perl which of course would need the backslash doubled inside a "" string).

    The cake is a lie.
    The cake is a lie.
    The cake is a lie.

      I was using data dumper. thanks everyone.
Re: Extra backlash getting added to string
by AnomalousMonk (Bishop) on Jul 15, 2021 at 17:13 UTC

    That's not what I see:

    Win8 Strawberry 5.8.9.5 (32) Thu 07/15/2021 13:10:20 C:\@Work\Perl\monks >perl -Mstrict -Mwarnings my $file="Billy_Bob_Smith"; $file =~ s/_/\\_/g; print "'$file' \n"; use Data::Dumper; print Dumper $file; ^Z 'Billy\_Bob\_Smith' $VAR1 = 'Billy\\_Bob\\_Smith';
    How are you looking at $file?

    Update: Further to Fletch's post:
    Utilities like Data::Dumper and Data::Dump try to represent output as "proper" single- or double-quoted strings. A single-quoted string (as in the Data::Dumper example above) handles multiple backslashes that are not before a quote terminal like this:

    Win8 Strawberry 5.8.9.5 (32) Thu 07/15/2021 13:10:29 C:\@Work\Perl\monks >perl -Mstrict -Mwarnings my $string = 'a\b\\c\\\d\\\\e'; print ">$string< \n"; ^Z >a\b\c\\d\\e<
    You may be seeing an artifact of your data dumper utility, whatever it is.


    Give a man a fish:  <%-{-{-{-<

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://11135039]
Approved by LanX
Front-paged by Corion
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (1)
As of 2021-07-24 06:10 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?