转载请注明出处:http://www.cnblogs.com/tobecrazy/
1.什么是哈希
哈希是perl的一种数据类型,比较类似数组,用于存放数据,包括2部分关键字keys和值value。不同于数组,哈希访问元素的是按照名字访问标量的key=>value.
hash 用% 来标示
2.hash 操作
a.增加
my %hash; //定义
第一种写法:$hash{'author'}="Young"; #author 是关键字,Young 是value 与数组一样,hash作为整体时候是这样%hash 带标示符%,作为单个元素使用要使用$而不是%
第二种写法: my %food=('fruit',"apple",'drink',"Coco"); #类似数组初始化 注意这里使用的是( )不是{} {},用了它实际就是创建了一个引用,正确的就是(),圆括号否则会报 Reference found where even-sized list expected at hash.pl line 4.
第三种写法:my %fruit=(apple=>"fruit",banana=>'fruit'); # =>是perl运算符,用于hash
b.使用hash值
单个使用:$hash{'author'}; # $哈希名{$keyword}
全部使用:foreach $key (keys %food)
{
print print "$key=>$food{$key}\n"; #使用keys %food 遍历%food的每一个关键字
}
获取所有的key:my @key=keys %fruit;
获取所有的value: my @value=values %fruit;
3.hash 函数 exists 和delete
判断 某个关键字是否存在 exists $hash{'auther'}
删除某个关键字 delete %hash{$keyword}
删除整个hash %hash=();
实例
#!/usr/bin/perl -w
my
%hash
;
$hash
{
'author'
}=
"Young"
;
my
%food
=(
'fruit'
,
"apple"
,
'drink'
,
"Coco"
);
my
%fruit
=(
apple
=>
"fruit"
,
banana
=>
'fruit'
);
print
"$hash{'author'}\n"
;
foreach
$key
(
keys
%food
)
{
print
"$key=>$food{$key}\n"
;
}
my
@key
=
keys
%fruit
;
my
@value
=
values
%fruit
;
print
@key
;
print
@value
;
print
"\n"
;
print
"auther is exists\n"
if
(
exists
$hash
{
'auther'
});
delete
$food
{
'drink'
};
print
"after delete some keyword print \%food\n"
;
while
((
my
$key
,
my
$value
)=
each
%food
)
{
print
"$key=>$value\n"
;
}
|
结果:
/home/Young> perl hash.pl
Young
fruit=>apple
drink=>Coco
bananaapplefruitfruit
after delete some keyword print %food
fruit=>apple