2012-06-21 61 views
1

我想讀取數組中的多個XML文件,然後逐個解析它們。將多個XML文件讀入數組並使用Perl解析它們

下面是我在做什麼:

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; 

這是行不通的。

+0

您不能在雙引號字符串中使用反斜槓作爲windows路徑。使用斜槓或單引號字符串。你也應該總是使用警告; use strict;' – TLP

+0

順便說一下,由於兩個主要錯誤,代碼不會編譯或運行正常:字符串中的反斜槓,以及不匹配的文件處理'FILE'和'File'。你不應該發佈你還沒試過的代碼,因爲細節很重要。 – TLP

回答

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; 
0

您需要提供一個模式grep這樣的:

my @files = grep {/\.xml$/i} readdir FILE; 
+0

也許應該使用'/ i'修飾符來忽略大小寫。 – TLP

2

試試這個:

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

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

編輯:根據TLP的評論在glob函數中插入完整路徑。

+0

'glob「C:/ documents/outputfiles/*。xml」' – TLP

+0

'glob「$ output/*。xml」' – Borodin

相關問題