嗨,我想讀取目錄和子目錄而不知道目錄名稱。當前目錄是「D:/ Temp」。 'Temp'具有像'A1','A2'這樣的子目錄。再次'A1'具有像'B1','B2'的子目錄。再次'B1'具有像'C1','C2'的子目錄。 Perl腳本不知道這些目錄。所以它必須首先找到目錄,然後在'C1'中一次讀取一個文件,一旦所有文件都在'C1'中讀取,它應該改變爲'C2'。我試着用下面的代碼在這裏我不想讀取陣列(@文件)中的所有文件,但在一次需要一個文件。在數組@dir元素應該是休閒。如何在不知道perl目錄名的情況下讀取目錄和子目錄?
$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:/溫度/ A1/B2/C2" ? – Kenosis
@Kenosis是的。 – ImDrPatil
考慮在您的問題中添加**遞歸**,**文件系統**和** Windows **標記。 – DavidRR