-c orm some pan hash 函数 bin solid none initial
#!/usr/bin/perl -w
#########################################################################
# File Name: test3.pl
#########################################################################
print "hash map\n";
my %some_hash = ("key1", 100, "key2",200, "key3", 300);
%some_hash = reverse %some_hash; #翻转的是 key-value --> value-key
#这种定义方法能更明确那个是 key,那个是 value
%some_hash = (
"key4" => 1,
"key5" => 2,
"key6" => 3,
"key7" => 4,
);
#在 hash 中插入一个新元素,只需要直接赋值即可,有则覆盖,无则新建
$some_hash{"key8"=5;
my @hash_to_array = %some_hash;
print "hash_to_array: @hash_to_array \n";
#hash 函数
#函数 keys 返回 hash 所有的 keys, 函数 values 返回所有的 values
my %funcHash1 = ("a"=>1, "b"=>2, "c"=>3);
my @k = keys(%funcHash1);
my @v = values(%funcHash1);
print "keys: @k\n";
print "values: @v\n";
#函数 each 返回 key/value 列表, 用于迭代 hash 每一个元素
my %funcHash2 = ("a"=>4, "b"=>5, "c"=>6, "d"=>0);
while(my($key, $value) = each %funcHash2 ){
print "$key --> $value\n";
}
#hash 的存储是无序的,可以用 sort 排序
foreach $key (sort(keys(%funcHash2)) ){
$value = $funcHash2{$key};
print "key: $key => value: $value\n";
}
#exists 函数,查看 hash 中是否含有某个 key
if(exists $funcHash2{"a"){
print "funcHash2 中存在这个 key\n";
}else{
print "funcHash2 中不存在这个 key\n";
}
#如果省略 exists, 则是通过 value 是 undef 或者是 0 判断不存在,但 value==0 是存在的元素
if($funcHash2{"d"){
print "funcHash2 中存在这个 key\n";
}else{
print "funcHash2 中不存在这个 key\n";
}
#delete 函数, 删除 hash 中某 key 对应的元素
my %funcHash3 = ("a"=>11, "b"=>22, "c"=>33);
@temp = %funcHash3;
print "@temp\n";
delete $funcHash3{"b"; #返回的是删除的 key 所对应的 value 22
@temp = %funcHash3;
print "@temp\n";
#双引号中支持单个 hash 元素, 但是支持整个 hash 内插
print "$funcHash3{'a'}\n"; #输出对应的单个元素
print "%funcHash3\n"; #不支持这种形式,直接输出 $funcHash3
end
Perl hash map 操作,定义,插入,删除,hash 函数
来源: http://www.bubuko.com/infodetail-2468162.html