hash

2013-08-24 01:26
my %hash = qw/1 one 2 two 3 three/;


這樣的賦值方式看起來跟處理陣列時候的方式非常接近,我們利用qw//來指定一個串列,並且將這個串列賦值給雜湊。這時候,Perl會按照串列的順序,分別為【鍵】,【值】,並且賦予雜湊。所以在這個例子中,所得到的結果就跟我們這麼寫是一樣的:
 


$hash{1} = 'one';
$hash{2} = 'two';
$hash{3} = 'three';


或許你會想到某個狀況,也就是鍵值的個數不一的時候。這時候,Perl會把最後一個鍵所對應的值設為undef(註二),你可以利用這個程式來確認:
 


my %hash = (1, 2, 3, 4, 5);
print 'false' unless defined($hash{5});


當然利用串列賦值的方式是方便了一些,可是就像我們剛剛遇到的問題,有時候會發現利用串列賦值的情況似乎比較容易發生錯誤。尤其當一個串列的元素足夠多的 時候,你要怎麼確認某個串列中的元素應該是鍵,還是值呢?最簡單的方式大概就是進行人工比對,所以你或許可以考慮用另外的方式來賦值給雜湊,就像這樣的寫 法:
 


my %hash = (
            1 => 'one',
            2 => 'two',
            3 => 'three',
            );