添加两个目录中的文件列表

时间:2014-04-25 18:23:56

标签: perl

我使用的语法是:

 my @inFiles = </var/test1/*.*>;

将目录中的文件放入数组中。

如何将第二个目录中的文件放到同一个数组中?

伪代码:(我知道这不是真的)

my @inFiles += </var/test2/*.*>;

注意:我不能依赖于相似目录的名称,因此我无法执行以下操作:

my @inFiles = </var/test*/*.*>;

2 个答案:

答案 0 :(得分:6)

使用push将元素添加到数组的末尾

push @inFiles, </var/test2/*.*>;

答案 1 :(得分:1)

正如Miller所述,您可以使用pushunshift向数组添加项目。有关完整的Perl文档,请参阅Perldoc

但是,在使用目录时,最好的办法是使用File::Find来解析目录:

use strict;
use warnings;
use function qw(say);
use File::Find;

# Directories you want to use
my @directories = qw(/directory/first /directory/second);

my @files;  # Files in those directories you want

find ( 
    sub {
        return unless -f;   #Files only...
        push @files, $File::Find::name;   # Name of the file you found
    }, @directories
);

完成后,两个目录中的所有文件都将位于@files中。这不仅包括目录下的文件,还包括子目录。