我在Strawberry Perl Windows上使用File::Find::Rule
。
当我运行以下代码时:
@files = File::Find::Rule->file()
->in( $dir );
foreach my $file (@files){
say $file;
}
我以这种格式获取文件列表:
C:\data\mydata\file/1.xls
而不是这种格式:
C:\data\mydata\file\1.xls
可能是什么问题?
答案 0 :(得分:6)
唯一的问题是你的期望。 C:\data\mydata\file/1.xls
是完全有效的Windows路径。
File :: Spec可以为你规范化路径。
use File::Spec::Functions qw( canonpath );
$path = canonpath($path);
或
use File::Spec::Functions qw( canonpath );
@files = map { canonpath($_) } @files;
答案 1 :(得分:1)
原因可能是dir和文件名的手动连接。您可以使用File :: Spec:
修复它use File::Spec;
my @files = File::Find::Rule->file()->in( $dir );
foreach my $file (@files){
say File::Spec->catfile($file);
}