in reply to Not able to replace to directory paths
When I run the code you supplied (using <DATA> and putting the input file contents in the __DATA__ section) it generates:
Name "main::OUTPUT" used only once: possible typo at ... . missing E:/qdepot_automation/addfiles.txt Unrecognized escape \q passed through in regex; marked by <-- HERE in +m/E:\q <-- HERE depot_automation/ at ... . missing E:/qdepot_automation/AMSS/products/build/textfiles.txt
which is different than the result you report. Your reported result is obtained by not using strictures! If you actually used strictures as you are pretending to you'd have been further on toward an answer to your problem: you are using \ instead of / in your match string. You should probably also meta quote the match string in case a . or other interesting character is part of the path you are matching. Consider:
use strict; use warnings; my $client_root = "E:/qdepot_automation"; my $perforce_root_dir = "//depot/code"; my $line; while ($line = <DATA>) { if ($line =~ /missing/) { $line =~ s/\\/\//g; $line =~ s/\Q$client_root\E/$perforce_root_dir/g; print "$line\n"; } } __DATA__ missing E:\qdepot_automation\addfiles.txt same E:\qdepot_automation\AMSS\products\build\ms\files.data same E:\qdepot_automation\AMSS\products\build\ms\build.cmd missing E:\qdepot_automation\AMSS\products\build\textfiles.txt same E:\qdepot_automation\AMSS\products\build\ms\lib.min
prints:
missing //depot/code/addfiles.txt missing //depot/code/AMSS/products/build/textfiles.txt
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Not able to replace to directory paths
by Anonymous Monk on Mar 10, 2011 at 22:26 UTC | |
by Eliya (Vicar) on Mar 10, 2011 at 23:26 UTC | |
by GrandFather (Saint) on Mar 10, 2011 at 22:53 UTC |