2014-04-17 2 views
0

perl을 사용하여 속성 파일을 읽으려고합니다. 내 등록 정보 파일 abc.properties의 형식입니다 : 여기Perl에서 속성 파일을 읽는 중 발생하는 문제

jdk=Path1:Path2:PathN 
soa=Path1:Path2:PathN 

은 내 코드입니다 :

#!/usr/bin/perl 

my %o; 
open my $in, "abc.properties" or die $!; 
while(<$in>) { 
    $o{$1}=$2 while m/(\S+)=(\S+)/g; 
} 
close $in; 

for (keys %o) { 
    my @value_array = @{$o{$_}}; 
    print "Key is $_ and value is @values\n"; 
} 

출력은 다음과 같습니다 키 JDK이며 값은 키 SOA입니다 이며 값은

입니다

키에 해당하는 값을 읽을 수 없습니다. 내 목표는 값을 읽고 다음으로 나누는 것입니다.

펄에 익숙하지 않다면, 어떤 도움을 주시면 감사하겠습니다 !!

+2

키당 하나의 값만 있습니까? 또한, '엄격한 사용; 경고를 사용합니다. – choroba

+0

예, 각 키에는 복수 콜론을 포함하는 하나의 값만 있습니다 : – Sammi

+0

항상'use strict'. 항상 '경고 사용'. –

답변

2

키당 하나의 값만 예상하고 저장하려는 경우에는 값 배열을 만들 필요가 없습니다. 또한

for (keys %o) { 
    print "Key is $_ and value is $o{$_}\n"; 
} 

, if는 정규식과 일치하는 선 대신 while으로 사용되어야한다. 라인이 여러 번 어떻게 일치 할 수 있습니까?

use strict; use warnings;을 추가하면 작성한 실수 (@value_array 및 @values를 혼동)에 대해 알려줍니다.