从现在开始,每天一点点……

哈希的简单应用--hash

上一篇 / 下一篇  2011-07-06 10:19:23 / 个人分类:perl基础

1.访问哈希
  1)访问哈希元素
    $hash{$some_key}
    $family_name{"fred"} = "rubble"; //哈希键可以是字符串
    $family_name{"fred"} = "astaire";
    $bedrock = $family_name{"fred"};//若对某个已存在的哈希元素赋值,
     就会覆盖之前的值
    $family_name{"wilma"} = "astaire";
    $family_name{"betty"} .= $family_name{"wilma"};//哈希元素会因为赋值而诞生
     访问哈希表里不存在的值就会返回undef;
  2)访问整个哈希
     %family_name; //指代整个哈希
     在列表上下文中,哈希会自动变成一些简单的键值对,叫做哈希松绑。
     @array = %family_name;

2.哈希赋值
  %new_hash = %old_hash; //用法不常见
  %inverse_hash = reverse %any_hash;  //常见的用法
  my %last_name = (
    "fred" => "flintstone",
    "dino" => "undef",
    "barney" => "rubble",
  );
3.哈希函数
  keys函数:返回指定的 HASH 里的所有键字组成的一个列表。
  keys %hash;
  values函数:返回一个包含指定散列 HASH 里的所有值的列表。
  values %hash;
 
   #!/usr/bin/perl
   use strict;

   my %hash =(
     "a" => 1,
     "b" => 2,
     "c" => 3,
    );
   my @k = keys %hash;
    print "@k\n";
   my @v = values %hash;
   print "@v\n";
   my $count = keys %hash;
   print "$count\n";
   输出结果:
   c a b
   3 1 2
   3
   each 函数以一次一个键/值对的方式遍历一个散列。在列表环境中,each 返
   回 一个两个元素的列表,该列表包含散列中下一个元素的键字和数值。如果在
   标量环境里调用,each 只是返回散列中下一个元素的键字。如果散列已经全部
   读取完了,那么返回一个空列表,如果你给这个空列表赋值,那么在标量环境中
   会生成一个假值
   each %hash;
    while(($key, $values) = each %ENV){
       print "$key = $values\n";
     }
   delete函数:能从哈希中删除指定的键和对应的值;
   my $person = "betty";
   delete $books{$person};
   exists函数:若要检查哈希中是否有某个键,可用此函数返回真或假值,分别表
   示键存在与否,与对应的值无关。
   print "hey,there is a library card for dino!\n" if exists
   $book{"dino"};
   print "Exists\n" if exists $hash{$key};
  
4.作业题
  读入用户指定的名字并汇报相应的姓。


TAG:

 

评分:0

我来说两句

Open Toolbar