2012-06-21 2 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

. 슬래시 또는 작은 따옴표로 묶은 문자열을 사용하십시오. 또한 항상 경고를 사용해야합니다. 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 파일의 목록입니다.

EDIT : TLP 님의 의견에 따라 glob 기능에 전체 경로를 삽입했습니다.

+0

'glob "C :/documents/outputfiles/*. xml"' – TLP

+0

'glob "$ output/*. xml"' – Borodin