在用perl脚本读取文件夹信息的时候,基本操作类似与C语言的open函数,打开的文件夹要有类似文件指针。
opendir($dir_h, $ARGV[0]);
my @dir_contents = readdir($dir_h);
这里的$dir_h就是指向来打开目录的指针。
要读取目录的信息需要用一个数据存储,@dir_contents的长度至少为2,因为目录至少包含 "."和".."子目录,要想判断目录是否为空,需要判断目录下是否只有"."和".."子目录,操作如下:
if( scalar(@contents1) == 2 ){
&print_error("No files in the tow directories.");
return 0;
}
有时候要比较目录内容,例如,要比较目录里面的内容是否一致,即是否包含的文件个数和文件名称是否一一对应,则可以直接对两个数组进行比较即可:
opendir(my $dir_head1, $ARGV[0]);
my @dir_contents_1 = readdir($dir_head1);
opendir(my $dir_head2, $ARGV[1]);
my @dir_contents_2 = readdir($dir_head2);
if( @dir_contents_1 == @dir_contents_2 ){
print "equal.\n";
}
不过有一定要格外注意,这里对数组的比较仅仅是数组内字符串的比较,无法区分文件和文件夹,仅仅是一种粗略比较,
在文件夹默认只包含文件而不包含子文件夹的时候可以使用这种比较方法。