Advertisement

perl学习(6) 哈希

阅读量:

哈希在perl里是很重要的数据结构,现在想想定义三种变量:

1,标量,就是c中的变量:$name

2,列表,就是数组:@list

3,哈希,形式上就是c中的map:%hash

1.1.定义

假设 Perl 仅限于处理少量的 key/value 对,则其运行效率很高。即使包含数百万个 key/value 对时,《The Perl Journal》依然能够保持高效的运行效率。对于大量 key 的 hash 表来说,《The Perl Journal》的性能表现仍然良好。

特点:

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

  2. 如果没有存放值,则其返回undef。

#! /usr/bin/perl

use strict ;

use warnings ;

#声明

my %family_name;

$family_name{"xiaowei"} = "huang";

$family_name{"jialin"} = "wang";

$family_name{"areu"} = "who";

#初始化

my %color = ("red"=>1 , "yellow"=>2,"black"=>3 ) ;

1.2.函数

#hash function

1.2.1. keys,values

my @hashks = keys %color ; #返回所有的key

my @hashvs = values %color ; #返回所有的value

在标量context范围内,在这些函数返回hash中元素的数量(key/value)。此操作无需遍历所有hash中的元素,并且其效率很高。

my $size = keys %color ; #得到3,是指有3 个key/value 对

1.2.2. each 函数

我们通常会遍历每个hash表中的所有键值对(例如查看每个键值对),常见的方式是调用each函数,它会生成包含键/值的一对二元组序列。

实践中,一般只在while 循环中使用each:

while ((key, value) = each %hash){

print “key => value\n”;

}

#有序输出

foreach my $key (sort keys %color)

{

print "key=>",color{"$key"},"\n";

}

1.2.3. exists 函数

如何判断hash中包含某个特定的key可以通过调用该函数来实现。当该特定的key存在于hash中时会返回true需要注意的是这与是否有对应的value无关。

if(exists books{dino}){

rint “Hey, there’s a libaray card for dino!\n”;

}

1.2.4. delete 函数

删除操作会对指定键及其相关值进行处理,并将其从哈希表中移除。若该键不存在于其中,则不做任何处理,并会给出相应的提示信息。

my $person = “betty”;

delete books{person};

1.3.常用法

全部评论 (0)

还没有任何评论哟~