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


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