2013-05-28 2 views
4

좋은 날들.같은 파일에있는 모든 문자열을 찾아서 perl에서 값을 출력하십시오.

Excel 파일에서 ini 파일로 인쇄하려고하는데 Excel 및 ini 쓰기가 정렬되어 있지만 중복되지 않고 값을 가져 오는 것이 내 문제입니다.

Excel 파일 내가이 때문에 경우에 작동하지 않을 수있는이

[House] 
    adress=133_Anderson_str 

    [Shop] 
    adress=12_Smith_Str 

    [Wheelshop] 
    address=832_Smith_Str 

    [House] 
    adress=21_smith_Str 

    [Shop] 
    address=1191_dandelion_rd 

같은 결과를 얻을 것이다 나는 foreach 문을 수행 할 경우이

House  |  133_Anderson_str 
    Shop   |  12_Smith_Str 
    Wheelshop |  832_Smith_Str 
    House  |  21_smith_Str 
    Shop   |  1191_dandelion_rd 

같은 것을 포함하고 INI 파일에 인쇄합니다 나는 집안의 모든 주소를 검색 할 GUI를 실행합니다. 첫 번째 주소 만 참조한 다음 새 행에서 끝납니다. 나는 한 번 각 중복 값을 인쇄 할 후이

[House] 
    adress=133_Anderson_str, 21_smith_Str 

    [Shop] 
    adress=12_Smith_Str, 1191_dandelion_rd 


    [Wheelshop] 
    address=832_Smith_Str 

같은 인쇄해야 후 다음 값이 나는 테이블을 가지고 시도했다, 그러나 나는 올바른 순서로 인쇄하고 있는지 확인 얻을 수없는 각 값 올바른 키에 인쇄되고 키를 복제하지 않습니다.

Config :: Inifiles를 사용하여 ini 및 SpreadSheet :: Read를 인쇄하고 읽으면 스프레드 시트에서 데이터를 가져옵니다.

누군가가 내게 빛을 보여줄 수 있기를 바랍니다.

감사합니다.

답변

4

이 지금

my %hash; 
for my $line (@input) { 

    # $k = "House"; $v ="133_Anderson_str", etc. 
    my ($k, $v) = split/[\s\|]+ /x, $line; 

    my $arr = $hash{$k} ||= []; 
    push @$arr, $v; 
} 

수행 그룹화 %hash는 어레이 구조의 해쉬 @input 그룹 요소에 사용되는 5 개 라인/요소 @input 배열

House  |  133_Anderson_str 
Shop   |  12_Smith_Str 
Wheelshop |  832_Smith_Str 
House  |  21_smith_Str 
Shop   |  1191_dandelion_rd 

우선이어야 , 출력을 진행하십시오.

for my $k (sort keys %hash) { 

    my $arr = $hash{$k}; 
    my $vals = join ", ", @$arr; 

    print "[$k]\n", "address=$vals\n\n"; 
} 
+0

젠장, 그렇게 간단합니다. 대단히 감사합니다!! –