2011-05-31 141 views
1

是否有一种简单的方法来自动替换$ dir反斜杠与向前的,因为我知道的唯一方法是手动,如果路径太长是相当恼人的。 谢谢。Perl文件::查找Windows反斜杠目录路径

use strict; 
use warnings; 
use File::Find; 

my $dir = "E:\dir1\dir2\dir3\dir4\dir5"; 

find(\&temp, $dir); 
sub temp { 
    ..... 
} 

回答

2

不太清楚你所追求的,但一个简单的正则表达式将足以取代\/

埃塔:你将不得不放置在单引号的路径保存反斜杠,然后更换他们(感谢cjm指出):

$dir = 'E:\dir1\dir2\dir3\dir4\dir5'; 
$dir =~ s#\\#/#g; 
+0

我试过之前,正则表达式不起作用。通常我会复制粘贴目录路径并用反向手动替换反斜杠,我正在寻找一种可以自动执行的方法。 – thebourneid 2011-05-31 18:03:48

+1

当然,它的工作原理。也许你没有逃过反斜杠?你也可以使用'tr#\\#/#'。 – TLP 2011-05-31 18:36:06

+2

更可能的是,他在字符串上使用了双引号(如上面的代码),所以字符串实际上并没有反斜杠。单引号可以更容易地包含文字反斜杠。 – cjm 2011-05-31 19:02:58

1

那么非系统相关路径的想法呢?在标准的perl发行版中有一个名为File::Spec的模块。看看这段代码:

use strict; 
use warnings; 

use File::Spec; 

my $path; 
$path = File::Spec->catfile("dir1","dir2","dir3","dir4","dir5"); 
+0

在Windows上,这将使用反斜杠,这是OP不希望的。 – runrig 2011-05-31 22:49:19

相关问题