什么是哈希
哈希与数组的相同之处在于可以容纳很多值,并能随机存取,二区别在于数组以数字来检索,哈希以名字来检索。
访问哈希元素
$hash{$some_key}; $family_name{"wilma"} = "flinatstone";
访问整个哈希
要指代整个哈希,可以用百分号作为前缀%family_name
@any_array = %some_hash; #哈希松绑,会变成键值对的列表,但是顺序不一定。
哈希赋值
%inverse_hash = reverse %any_hash; #这会导致键值互换,建立一个反转哈希.
胖箭头
为了使键与值看起来更加清晰,在需要逗号的地方使用胖箭头来代替:
my %last_name = (
"fred" => "flintstone",
"dino" => "rubble", #整个列表需要以一个额外的逗号结尾,不过经过测试,发现不加也行。
)
哈希函数
keys 和 values 函数
my %hash = ("a"=>1,"b"=>2,"c"=>3);
my @k = keys %hash; #返回哈希的键列表;
my @v = values %hash; #返回哈希的值列表;
my $count = keys %hash; #有三对键值;
each 函数
each函数作用是罗列哈希的每个键值,一般用在while 循环中:
while(($keys,$values) = each %hash){
print "$key => $values\n";
}
exists函数
if(exists $books{"dino"}){
print "....."; #检查哈希中是否由某个键;
}
delete 函数
my $person = "betty";
delete $books{$person}; # 删除指定的键及其相应的值;
%ENV哈希
print "CHARACTER is $ENV{CHARACTER}\n"; # 只要在环境外设定了任何变量,都可以在perl中获取。