2012-11-14 7 views
0

데이터의 ini 파일을 저장하고 싶습니다. Perl에 큐브 메서드를 저장하려면 어떻게해야합니까?어떻게 큐브 방법을 저장할 수 있습니까

는 I 시도 :

stylesheet.ini :

p indent noindent 
h1 heading1 
h2 heading2 
h3 heading3 
h4 heading4 
h5 heading5 
h6 heading6 
disp-quote blockquote 

스크립트 여기

my %stylehash; 
open(INI, 'stylesheet.ini') || die "can't open stylesheet.ini $!\n"; 
my @style = <INI>; 
foreach my $sty (@style){ 
     chomp($sty); 
     split /\t/, $sty; 
     $stylehash{$_[0]} = [$_[1], $_[2], $_[3], $_[4]]; 
} 

print $stylehash{"h6"}->[0]; 

난 $ 할당 [2], $ [3], $ _ [4 ] 첫 번째 P 태그는 두 개의 배열을 가져오고 h1은 하나의 배열을 가져 오기 때문에 원하지 않는 배열이 삽입됩니다. 어떻게 완벽하게 저장할 수 있으며 어떻게 검색 할 수 있습니까?

내가이 필요합니다

$stylehash{$_[0]} = [$_[1], $_[2]]; #p tag 
$stylehash{$_[0]} = [$_[1]]; #h1 tag 

print $stylehash{"h1"}->[0]; 
print $stylehash{"p"}->[0]; 
print $stylehash{"p"}->[1]; 

가 어떻게 큐브 방법을 저장할 수 있습니다. 태그는 항상 고유하고 스타일 이름은 임의로 증가 또는 감소합니다. 이 문제를 어떻게 해결할 수 있습니까?

+1

정확히 '큐브 방법'이란 무엇입니까? – ugexe

+0

my % cube = ('$ _ [0]', [$ _ [1], $ _ [2]], '$ _ [0]', [$ _ [1]]); 여기 예를 들어 보겠습니다. $ _ [0]은 uniq 키이지만 값은 배열의 크기와 다릅니다. ini 파일 바로 위에 저장할 수 없습니다. easly 검색 할 수 있지만 각 키에 대해 diff 크기의 배열을 저장할 수 없습니다. – user1811486

+1

'split'이 void 문맥에서 결과를'@ _ '로 지정하는 기능은 더 이상 사용되지 않습니다. 주의해서 사용하십시오. – mob

답변

5

제대로 이해하면 값 목록이있는 일련의 키가 있습니다. 어쩌면 하나의 가치 일 수도 있고 아마도 두 가지 일 수도 있고 세 가지 일 수도 있습니다. 당신은 이것을 저장하고 싶을 것입니다. 가장 간단한 방법은 이것을리스트의 해시에 넣고 Perl 데이터 구조를 잘 처리하는 JSON과 같은 기존 데이터 형식을 사용하는 것입니다.

use strict; 
use warnings; 
use autodie; 

use JSON; 

# How the data is laid out in Perl 
my %data = (
    p  => ['indent', 'noindent'], 
    h1 => ['heading1'], 
    h2 => ['heading2'], 
    ...and so on... 
); 

# Encode as JSON and write to a file. 
open my $fh, ">", "stylesheet.ini"; 
print $fh encode_json(\%data); 

# Read from the file and decode the JSON back into Perl. 
open my $fh, "<", "stylesheet.ini"; 
my $json = <$fh>; 
my $tags = decode_json($json); 

# An example of working with the data. 
for my $tag (keys %tags) { 
    printf "%s has %s\n", $tag, join ", ", @{$tags->{$tag}}; 
} 

hashes of arrays과 관련된 추가 정보

+0

k 감사합니다. 잘 작동합니다. – user1811486