如何区分两条路径?
我们使用基本路径定义的$ src变量,我们将修改后的列表转换为FilesList.txt。
as
$src = "C:\\Users\\Desktop\\Perl\\Index"
$_ = "C:\Users\Desktop\Perl\Index\CC\Login.jsp";
现在,我们如何获得" CC \ Login.jsp"价值,我使用下面的代码,但我们没有得到预期的输出。请帮忙。
$src="C:\\Users\\Desktop\\Perl\\Index";
open IN, "FilesList.txt";
while(<IN>)
{
chomp($_);
$final=$_;
$final =~ s/\$src//;
print "\nSubvalue is ---$final \n";
}
答案 0 :(得分:5)
不要使用正则表达式模式来处理路径字符串。等效路径有多种不同的表示,字符串可能不匹配。正则表达式也不会关注路径分隔符,因此它不会纠正基本路径上的尾随分隔符,它可能会匹配C:\Users\Desktop\Perl\Ind
之类的部分路径步骤,而ex\CC\Login.jsp
显然是错误的{ p>
您需要abs2rel
File::Spec::Functions
功能
喜欢这个
use strict;
use warnings 'all';
use feature 'say';
use File::Spec::Functions 'abs2rel';
my $src = 'C:\Users\Desktop\Perl\Index';
for ( 'C:\Users\Desktop\Perl\Index\CC\Login.jsp' ) {
say abs2rel($_, $src);
}
CC\Login.jsp