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
In reply to Re: Not able to replace to directory paths
by GrandFather
in thread Not able to replace to directory paths
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |