Perl hash map操作,定義,插入,刪除,hash函數
#!/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"
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函數