访问hash元素
$hash{$some_Key}
hash有自己的命名空间,也就是说 \$ family_name{"Li"}和子程序&family_name之间毫无关系,perl 是根据名称前后的标点符号来确定它的真实意义的,这点跟cpp,java这些语言不同。例如,perl允许同时有\$ name和\$ name[5]。
$family_name{'fred'} = 'astaire'
访问整个hash
使用%作为前缀,hash可以转换成列表,可以采用下面的方式赋值。
%name_number = ('LiXin','09210047','XueChao','09210028')
@any_array = %name_number
我们称这个变换叫展开哈希,将它变成key-value对列表。注意展开时,不一定按原来顺序,但可以肯定的是每一个key-value肯定是相邻出现的。
hash赋值
my %new_hash = %old_hash
赋值的过程其实是将%old_hash展开成列表,然后通过列表重新构造得到%new_hash
胖箭头
my %last_name = (
'fred' => 'flintstone',
'dino' => undef,
'barney => 'rubble',
);
这只是逗号的另外一种写法,并无它意,只是为了更方便看。
keys和values函数
my %last_name = (
'fred' => 'flintstone',
'dino' => undef,
'barney => 'rubble',
);
my @k = keys %last_name;
my @v = values %last_name;
返回的数组k和v一定是一一对应的。 如果使用标量上下文,keys和values会返回hash中元素的个数:
my $count = keys %hash;
each函数
while(($key,$value) = each %hash){
print "$key => $value\n";
}
foreach $key (sort keys %hash){
$value = $hash{$key};
print "$key => $value\n";
}
exists函数
if(exists $hash{$some_key})
{
print "this some_key exists in the hash";
}
exists函数
检查hash里是否存在指定键。
if(exists $hash{$some_key})
{
print "this some_key exists in the hash";
}
delete函数
删除hash中的键。
my $person = 'betty'
delete $books{$person}
Comments !