首页›分类文章›计算机技术›perl 程序开发›哈希(hash)元素的存取

哈希(hash)元素的存取

计算机技术 · perl 程序开发2011-11-200次浏览0 个评论

要访问hash 元素,可以使用下面的语法:

perl
$hash{$some_key}

这和访问数组元素的方法有些类似,这里下标(key)上使用的是花括号({}),而不是方括号([ ])。下面我们看个例子:

perl
$family_name{"fred"} = "flintstone";
$family_name{"barney"} = "rubble";
foreach $person (qw)
{
     print "I've heard of $person $family_name{$person}.\n";
}

hash 的名字和Perl 中其它的标识符的命名规则是一样的(字母,数字,下划线组成,但不能由数字开头)。由于其属于不同的名字空间,则像hash 元素$family_name{“fred”}和子程序&family_name 之间没有任何的关系。当在名字前面是美元符号($),后面是花括号({}),则其为hash 元素。当给hash 选择名字时,最好这样思考:hash 元素的名字和key 之间可以用for 来连接。如,“the family_name for fred is flintstone(fred 的姓是flintstone)”。因此,hash 名为family_name,现在keys 和values 之间的关系就相当清楚了。Hash 的key 可以是任意的表达式:

perl
$foo = "bar";
print $family_name{$foo . "ney"}; #输出"rubble"

当将某个值存储在已经存在的hash 元素中,以前的值会被覆盖:

perl
$family_name{"fred"} = "astaire"; #将新值赋给已经存在的元素
$bedrock = $family_name{"fred"}; #得到"astaire";以前的值丢失了

这和数组或标量变量中的情况是一样的。如果存放一个新值到$pebbles[17]或$dino 中,则以前的值被替换。如果将新值存在$family_name{“fred”}中,则以前的值同样被替换掉。
可以通过赋值语句对hash 元素赋值:

perl
$family_name{"wilma"} = "flintstone"; #新增一个key(也包括value)
$family_name{"betty"} .= $family_name{"barney"}; #创建一个新元素

这和数组或标量中的情形是一样的:如果以前没有$pebbles[17]和$dino,赋值后就有了。如果以前没有$family_name{“betty”},则情况是一样的。
访问不存在的hash 元素得到undef:

perl
$grantie = $family_name{"larry"}; #没有larry:得到undef

这同样和数组或标量中的情形类似; 如果$pebbles[17]和$dino 中没有值,则访问它们得到的结果为undef。如果$family_name{“larry”}中没有存放值,则其返回undef。

评论

0

评论加载中…

发表评论

0/2000