1

我想读取一个数组中的多个 XML 文件,然后一个一个地解析它们。

这是我正在做的事情:

my $output = "c:\documents\outputfiles";
opendir (FILE, $output) or die "can't open the $output";

my @files = readdir File;
print @files; 

这将列出“输出文件”目录下的所有文件。我如何只读取 XML 文件?

我也试过:

my @files = grep {*.xml} readdir FILE;

这不起作用。

4

3 回答 3

2

试试这个:

@files = glob("C:/documents/outputfiles/*.xml");

@files 是所有 xml 文件的列表。

编辑:根据TLP的评论在 glob 函数中插入完整路径。

于 2012-06-21T17:53:16.153 回答
0

您需要像这样向grep提供模式:

my @files = grep {/\.xml$/i} readdir FILE;
于 2012-06-21T17:51:22.113 回答
0

Grep 将表达式或块作为其第一个参数。还考虑使用autodie

use autodie;
my $path = './files';

opendir(DIR, $path);
my @files = grep { -f "$path/$_" && m/.xml$/ } readdir(DIR);
closedir(DIR);

say for @files;
于 2012-06-21T17:56:42.373 回答