I am new to perl.
In a string How do I replace a backward slash with a forward slash?
when I call the following perl api $FindBin::Bin; I get the path as follows
$myPath = c:/perl/test
I would like to covert this to
c:\perl\test
I did try the following and get errors
#$myPath=~ tr/\//\/c;

Recommended Answers

All 14 Replies

#!/usr/bin/perl -w
#ReplaceBackslashWithSlash.pl
use strict;

my $myPath = 'c:\perl\test'; # Example string containing backslashes
print "\nOriginal string is: $myPath\n\n";

# The following command substitutes backslashes with forward slashes
# You need to escape the backslash and slash with backslash
$myPath =~ s/\\/\//g;
print "Modified string is: $myPath\n";

Thanks for the replay,
Sorry I made a mistake. the source string is
'c:/perl/test'
would like to convert as
c:\perl\test

Sorry, I read your example wrong. This should do it. Too bad the substitute command uses slashes to delimit the two strings. It confuses me, but it should work this time.

#!/usr/bin/perl -w
#ReplaceSlashWithBackslash.pl
use strict;

my $myPath = 'c:/perl/test'; # Example string containing backslashes
print "\nOriginal string is: $myPath\n\n";

# The following command replaces forward slashes with backslashes
# You need to escape the backslash and slash with backslashes
$myPath =~ s/\//\\/g; #There must be a better way, but I don't know it.
print "Modified string is: $myPath\n";
#!/usr/bin/perl -w
#ReplaceBackslashWithSlash.pl
use strict;

my $myPath = 'c:\perl\test'; # Example string containing backslashes
print "\nOriginal string is: $myPath\n\n";

# The following command substitutes backslashes with forward slashes
# You need to escape the backslash and slash with backslash
$myPath =~ s/\\/\//g;
print "Modified string is: $myPath\n";

why have u not write in 4th and 7th line

Blank lines won't make any difference to how the program runs. Since I'm new to Perl I probably don't have a good sense of style yet. But I was trying to separate my code into three sections: introductory lines that appear in all programs, followed by setting up and printing the test string, followed by modifying and printing the resulting string.

Thank you all for your support

no i have no any idea about this. i am thankful to you for this topic. i like it very much.

Hey guys I'm stuck. I have been trying to write a sed or perl script to change the below. But each time I run the sed script or perl it completely zeros out the file.

I want to change this
/opt/dragon/bin/runit

to this
cd /opt/dragon/bin; /opt/dragon/bin/runit

Welcome to Daniweb. Please start a new thread to ask your question. When you ask your question in a new thread, it will help if you list the script that you tried. Then maybe someone can advise you why your script didn't give you the result you wanted.

string abc=c:/mit/sss/ss/;
string changingpath=abc.tostring().Replace(@"/",@"\");

label.text=changingpath.tostring();

it will sure work

BUT how to replace "'" to """.
i mean single coats to double coats???

string abc= "hi my name is 'MITESH'";

I WANT THIS STATEMENT AS

hi my name is "MITESH" PLZ HELP ME

Hi

Can you please tell how it will work if the string $myPath is in double qoutes because the string which u have mentioned it will work fine in only single qoutes but in double qoutes it wont work.

for ex my $myPath = "c:\perl\test";
$myPath =~ s/\/\//g;
expected output : print $mypath;
output :
C:PERLTEST

if u want to change /opt/dragon/bin to /opt/dragon/bin/runit do,
perl -p -i -e 's/\/opt\/dragon\/bin/\/opt\/dragon\/bin\/runit/g'

1) Old post...
2) You could do it with s/(\/opt\/dragon\/bin)/$1\/runit/g if you want to repeat the matched as a part of the result.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.