1

配列内の複数の XML ファイルを読み取り、それらを 1 つずつ解析したいと考えています。

これが私がやっていることです:

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

my @files = readdir File;
print @files; 

これにより、「outputfiles」ディレクトリの下にあるすべてのファイルが一覧表示されます。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は、最初のパラメーターとして式またはブロックのいずれかを取ります。また、使用を検討して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 に答える
0

次のようにgrepにパターンを指定する必要があります。

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