【发布时间】:2013-12-31 07:59:22
【问题描述】:
您好,我想在不知道目录名称的情况下读取目录和子目录。当前目录是“D:/Temp”。 'Temp' 具有像 'A1'、'A2' 这样的子目录。同样,“A1”具有像“B1”、“B2”这样的子目录。同样,“B1”具有像“C1”、“C2”这样的子目录。 Perl 脚本不知道这些目录。因此,它必须首先找到目录,然后在目录“C1”中一次读取一个文件,一旦在“C1”中读取所有文件,它应该更改为“C2”目录。我在这里尝试了以下代码,我不想读取数组(@files)中的所有文件,但一次需要一个文件。数组中的 @dir 元素应为 fallows。
$dir[0] = "D:/Temp/A1/B1/C1"
$dir[1] = "D:/Temp/A1/B1/C2"
$dir[2] = "D:/Temp/A1/B2/C1"
下面是我试过的代码。
use strict;
use File::Find::Rule;
use Data::Dumper;
my $dir = "D:/Temp";
my @dir = File::Find::Rule->directory->in($dir);
print Dumper (\@dir);
my $readDir = $dir[3];
opendir ( DIR, $readDir ) || die "Error in opening dir $readDir\n";
my @files = grep { !/^\.\.?$/ } readdir DIR;
print STDERR "files: @files \n\n";
for my $fil (@files) {
open (F, "<$fil");
read (F, my $data);
close (F);
print "$data";
}
【问题讨论】:
-
是否有“D:/Temp/A1/B2/C2”?
-
考虑在您的问题中添加 recursion、filesystems 和 windows 标签。
标签: perl