如何使用perl(不使用File::Find)获取子目录中的文件名数组



我正在尝试获取子目录中存在的文件的名称。此外,我想获得数组的大小,并在单个文件中搜索文本

#!/usr/bin/perl
$dir = $ARGV[0];
my @filesList;
opendir(DIR, $dir) || die "Unable to open the directory";
@contents=readdir(DIR);
foreach $listitem ( @contents )
{
if ( -d $listitem )
{
opendir(DIR,$listitem);
@c1=readdir(DIR);
foreach  $firstlevel(@c1)  # first level directory structure
{
if (-d $firstlevel) {
opendir(DIR,$firstlevel);
@c2=readdir(DIR);
foreach  $secondlevel(@c2) {  #second level directory structure
push(@filesList, $secondlevel);
}
} else {
# push(@filesList, $firstlevel);
}
}
#push(@filesList, $listitem);   
} else {
push(@filesList, $listitem);
}
}
$size = @filesList;
print "array size : $size";
foreach $file(@filesList)
{
print "$file"; 
}
close(DIR);

所有这些我都想在不使用Find::Find的情况下工作,我收到了use File::Find的错误

此外,我如何获得阵列的大小

scalar是获得数组大小所需的,尽管您可以省略标量,但仍然可以获得看起来已经拥有的元素数量。如果不是这样的话,你必须弄清楚你所说的"数组大小"到底是什么意思。更干净的方法是使用File::Find,但如果你只是想快速找到一些东西,你可以使用backtick:进行系统调用以查找,或任何其他系统命令

use strict;
use warnings;
my @files = `find $ARGV[0] -type f`;
my $size = scalar(@files);
print "Number of files = $sizen";
foreach my $file(@files) {
print "$file";
}

最新更新