2014-03-06 45 views
0

我還沒有掌握數組和哈希,哈希數組,散列哈希等差異,所以我不知道下面的代碼定義了什麼。有人會好心讓我知道這是什麼嗎?動態填充嵌套的Perl哈希和數組

my $col_props = [ 
    { min_w => 50,             # Minimum column width. 
     max_w => 50,             # Maximum column width. 
     justify => 'left',            # One of left|center|right , 
     font => $pdf->corefont("Arial", -encoding => "latin1"), 
    }, 
    { min_w => 110,            # Minimum column width. 
     max_w => 110,            # Maximum column width. 
     justify => 'left',            # One of left|center|right , 
     font => $pdf->corefont("Arial", -encoding => "latin1"), 
    }, 
    { min_w => 110,            # Minimum column width. 
     max_w => 110,            # Maximum column width. 
     justify => 'left',            # One of left|center|right , 
     font => $pdf->corefont("Arial", -encoding => "latin1"), 
    }, 
]; 

但是,我真正的問題是,鑑於上面的代碼我怎麼填充$col_props動態?

+0

http://perldoc.perl.org/perldsc.html#ARRAYS-OF-HASHES –

+0

從什麼填充它? – ikegami

回答

3

$col_props參考散列的數組。

例如,對於第二項的最大列寬爲

$col_props->[1]{max_w} 

你如何填充它取決於你想要做什麼。假設有在%column_data列定義則可以將其推(它添加到末尾)使用

push @$col_props, \%column_data 

修改或添加散列中的一個的場簡單地分配給它的陣列組成,例如

$col_props->[2]{min_w} = 20 
0

$col_props是散列數組。

$[ ]中的分配暗示$col_props是數組引用。

一種方法可能是這樣的:

#!/usr/bin/perl -w 


my $col_props = [ 
    { min_w => 50,       # Minimum column width. 
     max_w => 50,       # Maximum column width. 
     justify => 'left'      # One of left|center|right , 
    }, 
    { min_w => 110,       # Minimum column width. 
     max_w => 110,       # Maximum column width. 
     justify => 'left'      # One of left|center|right , 
    }, 
    { min_w => 110,        # Minimum column width. 
     max_w => 110,       # Maximum column width. 
     justify => 'left'       # One of left|center|right , 
    }, 
]; 

foreach my $ref (@{$col_props}) { #1 print 
    print "min_w: ". $ref->{min_w} . "\n" 
    . "max_w: " . $ref->{max_w} . "\n"; 
} 

my %new_hash = (# create a new hash to push 
    min_w => 1, 
    max_w => 2, 
    justify => 'right' 
); 


push @{$col_props}, \%new_hash; # pushing the new_hash reference 
print "\n"; 

foreach my $ref (@{$col_props}) { #2 print 
    print "min_w: ". $ref->{min_w} . "\n" 
    . "max_w: " . $ref->{max_w} . "\n"; 
} 

#1 print:

min_w: 50 
max_w: 50 
min_w: 110 
max_w: 110 
min_w: 110 
max_w: 110 

#2 print:

min_w: 50 
max_w: 50 
min_w: 110 
max_w: 110 
min_w: 110 
max_w: 110 
min_w: 1 
max_w: 2 

爲了更好地理解,看看here