第六章 哈希
1.哈希
  哈希就是一种数据结构,可以容纳很多值,并随机存取.是很多的键值对,键是字符串且唯一,但是键可以对应多个值(值可以重复).键和值都是任意的标量.
  值可以是数字,字符串,undef.
2.访问hash元素

   
  1.   $family_name{"fred"}
3.访问整个哈希

   
  1.   %family_name
  对 hash赋值会带来列表赋值的上下文,列表的元素应该是键值对
  3种赋值方法:
%family_name = ("foo",35,"bar",12.4);
%family_name = qw/foo 35 bar 12.4/;
%family_name = 用胖箭头;
  # 数字和字符串会根据需要自动转换

  
  1. %new_hash = %old_hash; 
  反转hash,如果多个值,则后面的键覆盖前面的
  %new_hash = reverse %old_hash;
  哈希松绑(列表上下文)
  @any_array = %family_name;
  说明松绑后输出不一定是当初赋值的顺序.但是键对应值是固定的

  
  1. hash赋值直观的写法 
  2.   my %family_name = ( 
  3.      "foo" => 35, 
  4.      "bar" => 12.4, 
  5.      ); 
4.哈希函数
  返回键列表
  keys %hash
  返回值列表
  values %hash
  返回键的个数
  my $counts = keys %hash;
  print scalar(keys %hash);
  返回值得个数
  my $counts = values %hash;   
  布尔判断
  if(%hash)
  # 只要hash不为空就返回真
5.each函数
  每次返回一组键值对

  
  1. while (($key,$value)= each %hash)  { 
  2.       print "$key => $value\n"; 
  3.       } 
# 到返回空列表时循环结束
  # 不知道键对应多个值时会什么样
 
  检查某个键是否存在

  
  1. if (exists $hash{"diao"}) 
  # 返回真则键diao存在 
  删除指定的键和它的值

  
  1. delete  $hash{"diao"} 
# 假如键不存在,它直接结束,不会给出任何提示信息。