Perl哈希

哈希是key/value对的集合。Perl中的哈希以%标记开始。访问哈希元素的格式为${Key}

%hash = ('google','www.google.com','baidu','www.baidu.com');
print "\$hash{google} = $hash{google}\n";

创建哈希

1.为每个key设置value

例:

$hash{'amazon'} = 'www.amazon.com';
print "\$hash{amazon} = $hash{amazon}\n";

2.通过列表设置

列表中的第一个元素为key,第二个元素为value。

%hash = ('google','www.google.com','baidu','www.baidu.com');

也可以使用key=>value来进行设置:

%hash = ('google'=>'www.google.com','baidu'=>'www.baidu.com');

也可以使用-来代替引号

%hash = (-google=>'www.google.com',-baidu=>'www.baidu.com');

注:使用这种方式定义在输出元素的时候需要使用以下方式:

print "\$hash{-baidu} = $hash{-baidu}\n";

读取哈希值

可以像读取数组一样读取哈希表,哈希值提取到数组的方式为@{key1, key2}
例:

%hash = (-google=>'www.google.com',-baidu=>'www.baidu.com');
@array = @hash{-google, -baidu};
print "@array\n";

读取哈希的key和value

我们可以使用keys函数读取hash的所有键,格式如下:

keys %HASH

例:

%hash = (-google=>'www.google.com',-baidu=>'www.baidu.com');
@keys = keys %hash;
print "$keys[0]\n";
print "$keys[1]\n";

类似的我们也可以使用values函数读取所有的value值。

values %HASH

例:

%hash = (-google=>'www.google.com',-baidu=>'www.baidu.com');
@values = values %hash;
print "$values[0]\n";
print "$values[1]\n";

检测元素是否存在

当你在哈希中读取不存在的key/value对时会返回undefined值,且在执行时会有警告提醒。可以使用exists函数来判断key是否存在,如果存在则读取。
例:

%hash = (-google=>'www.google.com',-baidu=>'www.baidu.com');
if(exists($hash{-google})){
    print "Key exists.\n";
}else{
    print "Key does not exist.\n";
}

获取哈希的大小

可以通过获取哈希的键或者值的数组然后在计算相应数组的大小。

例:

%hash = (-google=>'www.google.com',-baidu=>'www.baidu.com');
@array = keys %hash;
$size = @array;
print "$size\n";

哈希中添加或删除元素

添加key/value可以通过简单的赋值完成,使用delete函数删除哈希元素。
删除示例:

%hash = (-google=>'www.google.com',-baidu=>'www.baidu.com');
delete $hash{-baidu};
@keys = keys %hash;
print "@keys\n";
@values = values %hash;
print "@values\n";

each函数

each函数可以列举出hash中的所有key/value对。但是在使用each循环的时候不要添加元素,这是不合法的。
例:

%hash = (-google=>'www.google.com',-baidu=>'www.baidu.com');
while(($key, $value) = each %hash){
    print "($key, $value)\n";
}
    原文作者:BlueSkyBlue
    原文地址: https://www.jianshu.com/p/d9399ad79109
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞