两条路径之间的Perl差异

时间:2017-06-26 02:55:30

标签: windows perl filepath relative-path

如何区分两条路径?

我们使用基本路径定义的$ 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";
}

1 个答案:

答案 0 :(得分:5)

不要使用正则表达式模式来处理路径字符串。等效路径有多种不同的表示,字符串可能不匹配。正则表达式也不会关注路径分隔符,因此它不会纠正基本路径上的尾随分隔符,它可能会匹配C:\Users\Desktop\Perl\Ind之类的部分路径步骤,而ex\CC\Login.jsp显然是错误的

您需要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