perl hash常用方法
2009-08-05 19:25
#!/usr/bin/perl -w
#1、基本
$family_name{"fred"}="flintstone"; //基本付值key/vaue
$family_name{"barney"}="rubble";
foreach $person(qw<barney fred>) //指定key集合遍历
{
print "I've heard of $person $family_name{$person}./n";
}
#2、整个hash付值% 方法有三种
%alphabet=('a','apple','b','ball','c','cat','x','xyophone');// key,value
%alphabet=('a'=>'apple','b'=>'ball','c'=>'cat','x'=>'xyophone');//key=>value
%alphabet=('a','apple','b','ball','c'=>'cat','x'=>'xyophone');//两都混合也行
foreach $v (keys(%alphabet)) //根据key值遍历,keys(%alphabet)是key集合
{ //同理values(%alphabet)是values集合
print "$v--->$alphabet{$v}/n";
}
@value=keys(%alphabet);
print "@value","/n"; //输出所有key值,如:a b c x ;"/n"代表最后换行
print @value,"/n"; //输出所有key值,如:abcx;(注意二都区别,不带引号)"/n"代表最后换行
#常用第二种遍历方法
while(($key,$value)=each(%alphabet))//each代表key/value实休
{
print "$key is for $value/n";
}
#3、常用算法.....................
#3、1赋值
$family_name{"fred"}="aaaaaaaa";
print family_name{"fred"};//取值 输出 aaaaaaaa
#3、2 exists 是否存在某key
if(exists $alphabet{'a'})
{
print "true/n";
}
#3、3 delete
my $var=a; //my 局部作用域
delete $alphabet{$var};//册除
#3、4计算hash表元素个数
my $count=keys%alphabet;
print $count,"/n";
#3、5 sort 排序
foreach $v (sort keys(%alphabet)) //根据key排序输出。。
{
}
#3、7 hash拷贝
%new_hash=% alphabet;
#3、8 reverse
%new_hash=reverse % alphabet; // % alphabet的内容为key/value;%new_hash的内容为vlue/key
//当% alphabet的value有重复时,为了保持key唯一性,%new_hash的内容重复的将丢失;