Perl hash map操作,定義,插入,刪除,hash函數


  1. #!/usr/bin/perl -w  

  2. #########################################################################  

  3. # File Name: test3.pl  


  4. #########################################################################  

  5.   

  6. print "hash map\n";  

  7.   

  8. my %some_hash = ("key1", 100, "key2",200, "key3", 300);  

  9. %some_hash = reverse %some_hash;  #翻轉的是key-value --> value-key  

  10.   

  11. #這種定義方法能更明確那個是key,那個是value  

  12. %some_hash = (  

  13.     "key4" => 1,  

  14.     "key5" => 2,  

  15.     "key6" => 3,  

  16.     "key7" => 4,  

  17. );  

  18.   

  19. #在hash中插入一個新元素,只需要直接賦值即可,有則覆蓋,無則新建  

  20. $some_hash{"key8"}=5;  

  21.   

  22. my @hash_to_array = %some_hash;  

  23. print "hash_to_array: @hash_to_array \n";  

  24.   

  25. #hash 函數  

  26. #函數keys返回hash所有的keys, 函數values返回所有的values  

  27. my %funcHash1 = ("a"=>1, "b"=>2, "c"=>3);  

  28. my @k = keys(%funcHash1);  

  29. my @v = values(%funcHash1);  

  30. print "keys: @k\n";  

  31. print "values: @v\n";  

  32.   

  33.   

  34. #函數each 返回key/value列表, 用於迭代hash每一個元素  

  35. my %funcHash2 = ("a"=>4, "b"=>5, "c"=>6, "d"=>0);  

  36. while( my($key, $value) = each %funcHash2 ){  

  37.     print "$key --> $value\n";  

  38. }  

  39.   

  40. #hash的存儲是無序的,可以用sort排序  

  41. foreach $key ( sort(keys(%funcHash2)) ){  

  42.     $value = $funcHash2{$key};  

  43.     print "key: $key => value: $value\n";  

  44. }  

  45.   

  46. #exists 函數,查看hash中是否含有某個key  

  47. if(exists $funcHash2{"a"}){  

  48.     print "funcHash2 中存在這個key\n";  

  49. }else{  

  50.     print "funcHash2 中不存在這個key\n";  

  51. }  

  52. #如果省略exists,則是通過value是undef或者是0判斷不存在,但value==0是存在的元素  

  53. if($funcHash2{"d"}){  

  54.     print "funcHash2 中存在這個key\n";  

  55. }else{  

  56.     print "funcHash2 中不存在這個key\n";  

  57. }  

  58.   

  59. #delete 函數, 刪除hash中某key對應的元素  

  60. my %funcHash3 = ("a"=>11, "b"=>22, "c"=>33);  

  61. @temp = %funcHash3;  

  62. print "@temp\n";  

  63. delete $funcHash3{"b"}; #返回的是刪除的key所對應的value 22  

  64. @temp = %funcHash3;  

  65. print "@temp\n";  

  66.   

  67. #雙引號中支持單個hash元素, 但是支持整個hash內插  

  68. print "$funcHash3{'a'}\n";  #輸出對應的單個元素  

  69. print "%funcHash3\n";  #不支持這種形式,直接輸出$funcHash3  





end


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章