热门关键字:  ubuntu  分区  函数  Fedora  linux系统进程

当前位置 :| 主页>Linux教程>编程开发>Perl>

Perl学习之哈希 hash

来源: 作者: 时间:2008-07-07 Tag: 点击:

key可以是任意的字符串,你可以使用任何的字符串作为key,但它们是唯一的。

另一种思考hash 的方法是,把它看作一堆数据(a barrel of data),每一个数据都有一个相应的标签。可以通过标签访问此标签对应的元素。但其中是没有“第一个”元素的概念的。在数组中,数组元素从0,1,2 开始编号。但在hash中,没有确定的顺序,因此也没有第一个元素。只是一些key/value 对的集合。

keys和values均为任意的标量,但keys通常转换为字符串。因此,如果将表达式50/20 作为keys,则其通常被转换为3字符的字符串“2.5”。

由于Perl的“没有不必要的限制”的设计哲学:hash可以是任意大小,从空hash(没有key/value对),到任何你内存允许的大小。

keys是唯一的,但values可以重复。hash的value可以是数字,字符串,undef,或者它们的混合,但key是唯一的。

为什么使用Hash
可以把hash看作一个简单的数据库,其中每一个key下面可以有一块数据。如果你的任务是关于:“查询重复的”,“唯一的”,“交叉引用的”,“查询表”,则hash很可能在这类应用中帮上你的忙。

二、哈希元素的存取
要访问hash 元素,可以使用下面的语法:$hash{$some_key}

这和访问数组元素的方法有些类似,这里下标(key)上使用的是花括号({}),而不是方括号([ ])。现在key 的表达式是字符串,而非数字。

hash的名字和Perl中其它的标识符的命名规则是一样的(字母,数字,下划线组成,但不能由数字开头)。

访问不存在的hash元素将得到undef。

1.作为整体的hash
要引用整个hash,使用百分号(%)作为前缀。

为了方便,hash可以转换为列表,或者反过来。

2.Hash 赋值
可以使用如下的语法在hash 之间拷贝:


%new_hash = %old_hash;

将hash转变成其它形式更加常见。例如,我们可以将hash反转:


%inverse_hash = reverse %any_hash;

3.大箭头符号(=>)
当给hash赋值时,有时并不明显哪些元素是keys,那些是values,因此发明了大箭头符号(=>)。在需要逗号的时候,都可以使用大箭头符号替换。

如:

my %last_name = (
"www" => 1,
"eee" => 2,
);

三、哈希函数
某些有用的函数可以对整个hash 进行操作。

1.keys和values函数
keys函数会返回此hash的所有keys,values函数将返回所有的values。如果hash中没有元素,则此函数将返回空列表。


my %hash = ("a"=>1, "b"=>2, "c"=>3);
print my @k = keys %hash;
print my @v = values %hash;

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册