Perl中的哈希(四)

Perl中的哈希數據結構。相比較於數組,這種數據結構對於數據查找和統計更加方便。數組

 

一個特殊的哈希,%ENV,表示當前terminal下,經過setenv設置的variable的鍵值。數據結構

鍵:環境變量名,,,,值:環境變量值。函數

 

哈希是一種數據結構,由一對對的鍵(keys)--值(values)對來組成。字符串

                             這些鍵和值都是任意的標量,但鍵總會被轉換成字符串並且必須是惟一的字符串。terminal

訪問哈希元素,    $hash{$some_key}    ##和訪問數組的作法相似,只是使用了花括號{}而非方括號[]。hash

                                                              訪問哈希表中不存在的值獲得undef。ast

                        $family_name{'barney'} = 'rubble'        ##完成對某一哈希元素的單一賦值變量

訪問整個哈希,    %family_name      ##此時哈希被轉換成列表,列表中的元素爲鍵--值對。foreach

                        %family_name = ('foo', 35, 'bar', 12.4);統計

                        my %new_hash = %old_hash     ##整個hash的賦值,會先將hash分解爲鍵值對,

                                                                             後在將鍵值對合併爲hash。因此先後順序可能改變。

還能夠將hash寫爲以下的方式來進行賦值   my %last_name = (

                                                                            'fred'  =>  'flintstone',

                                                                            'dino'  =>  undef

                                                                                   );

=>稱爲胖箭頭,來顯式的指出其中的鍵值對,其中鍵的''能夠省略。  $score{'fred'}也能夠直接簡寫爲$score{fred}。

 

哈希中的函數。

keys和values分別返回hash中的鍵列表和值列表。my @k = keys %hash;      my @v=values %hash;

                   在標量上下文中,分別返回鍵元素和值元素的個數。

                    if(%hash)     {print "....";}         ##在標量上下文,只要hash中有至少一個鍵值對,就返回真。

each函數,從哈希中返回一組鍵值。

                    while ( ($key, $value) = each %hash ) {print "....";}   ##在while中時標量上下文,返回2或0.

exists函數,檢查哈希中是否存在某個鍵。

                    if (exists $book{"dino"})  {print "....";}

delete函數,刪除哈希中的某個鍵值,不是賦值undef,而是直接刪除。

                    delete $books{$person};

不能夠在雙引號內,直接內插整個hash。

                    foreach $persons (sort keys %books)

                               if( $books($persons) )  {print "$person has $books{persons}";}         ##只能夠這樣完成單個哈希的內插

相關文章
相關標籤/搜索