Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re: How to substitute a string containing "\" with same string in quotes.

by Punitha (Priest)
on Oct 24, 2008 at 08:48 UTC ( #719287=note: print w/ replies, xml ) Need Help??


in reply to How to substitute a string containing "\" with same string in quotes.

Hi

Please note that in your example coding the '$sting' and '$substing' are misspelled in some occurances, to avoid this use 'use strict;'

You can escape those slashes in the matching string by using '\Q and \E' like

use strict; my $string = "this is my sting with \ and /slashes. put substing in qu +otes"; my $substring = "with \ and /slashes"; $string =~ s/\Q$substring\E/\"$substring\"/gi; print $string;

Punitha


Comment on Re: How to substitute a string containing "\" with same string in quotes.
Download Code
Re^2: How to substitute a string containing "\" with same string in quotes.
by Rapunzel (Novice) on Oct 24, 2008 at 08:54 UTC
    Thanks for quick reply. This way it has deleted "\" from substring. On printing $string i am getting >>this is my sting "with and /slashes". put substing in quotes But i want it this way >>this is my sting "with \ and /slashes". put substing in quote

      Hi

      Check the input itself is not containing the '\', because it is interpolated in double quotes.

      use strict; my $string = "this is my sting with \ and /slashes. put substing in qu +otes"; my $substring = "with \ and /slashes"; print $string; $string =~ s/\Q$substring\E/\"$substring\"/gi; OUTPUT: this is my sting with and /slashes. put substing in quotes

      Instead use single quote in the input like,

      use strict; my $string = 'this is my sting with \ and /slashes. put substing in qu +otes'; my $substring = 'with \ and /slashes'; print $string; $string =~ s/\Q$substring\E/\"$substring\"/gi; OUTPUT: this is my sting with \ and /slashes. put substing in quotes

      This will give the correct output

      Punitha

      No, $string and $substring don't contains any "\" to begin with.
      # The string these literals produce don't contains any "\". my $string = "my string with \ and / slashes."; my $substring = "with \ and / slashes"; print("$string\n"); print("$substring\n"); print("\n"); # This is what the literals should be. $string = "my string with \\ and / slashes."; $substring = "with \\ and / slashes"; print("$string\n"); print("$substring\n"); print("\n"); # It works. $string =~ s/\Q$substring\E/\"$substring\"/gi; print("$string\n");
      my string with and / slashes. with and / slashes my string with \ and / slashes. with \ and / slashes my string "with \ and / slashes".

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (8)
As of 2015-07-02 06:14 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (30 votes), past polls