Perl hash map操作,定义,插入,删除,hash函数

#!/usr/bin/perl -w
#########################################################################
# File Name: test3.pl
# Author: kevin xiang
# Created Time: 2014年07月08日 星期二 09时07分13秒
#########################################################################

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值