[Perl]Perl哈希(Hash)的语法及应用

                              Perl哈希(Hash)的语法及应用

 

一、二维Hash

1、在用Script Parse文件的過程中,構建一個好的數據結構是非常重要的。只有前期的數據結構建的好,才能的開發和維護才能得心應手。本文主要介紹二維Hash的構建以及Access。

2、所謂的二維Hash,就是在Hash裡面存放Hash,key <=> value對中的value是Hash,如:

#!/usr/bin/perl -w

my %hash;
my %sub_hash;

$sub_hash{"id"} = 0;
$sub_hash{"name"} = "xueying";
$sub_hash{"age"} = 28;

$hash{"key"} = \%sub_hash;

foreach my $key (sort keys(%hash)){
  print($hash{$key}{"name"});
}

3、注意:用捕獲模式拿到的變量不能作為Hash的Key。例如$1等,需要先轉存一次再使用。

4、漂亮的打印Hash:Data::Dumper模块中的Dumper函数:

#!/usr/bin/perl -w

use Data::Dumper;

my %fruit = (apple=>"fruit", banana=>'fruit');

print Dumper(\%ascii_for_char);
print("\n");

 

二、Perl中的Hash

1.什么是哈希

  •   哈希是perl的一种数据类型,比较类似数组,用于存放数据,包括2部分关键字keys和值value。
  • 不同于数组,哈希访问元素的是按照名字访问标量的key=>value.
  • hash 用% 来标示

2.hash 操作

   a.添加元素     

my %hash;         #定义

#向Hash中添加元素,方法一
$hash{'author'} = "Young";  #author 是key,Young 是value


#向Hash中添加元素,方法二
my %food = ('fruit', "apple", 'drink', "Coco"); 

#向Hash中添加元素,方法三
my %fruit = (apple=>"fruit", banana=>'fruit');    # =>是perl运算符,用于hash中,创建键值对
  • 与数组一样,hash作为整体时候是这样%hash 带标示符%,作为单个元素使用要使用$而不是%
  • 类似数组初始化,注意这里使用的是( )不是{}。  

   b.使用hash值

  • 单个使用:$hash{'author'};         #       $哈希名{$keyword}
  • 全部使用:
foreach $key (keys %food) {   
  print("$key=>$food{$key}\n");     #使用keys %food 遍历%food的每一个关键字

}      
  • 获取所有的key:my  @key = keys(%fruit);
  • 获取所有的value:  my @value = values(%fruit);                                           

3.hash 函数 exists 和delete

  1. 判断 某个关键字是否存在 exists $hash{'auther'}
  2. 删除某个关键字 delete %hash{$keyword}
  3. 删除整个hash %hash=();

4.实例

#!/usr/bin/perl -w

my %hash;

$hash{'author'}="Young";

my %food = ('fruit',"apple",'drink',"Coco");

my %fruit = (apple=>"fruit",banana=>'fruit');

print("$hash{'author'}\n");

foreach $key (keys %food) {
  print("$key=>$food{$key}\n");
}

my  @key = keys(%fruit);

my @value = values(%fruit);

print @key;
print @value;
print "\n";

print("auther is exists\n") if(exists($hash{'auther'}));

delete($food{'drink'});

print "after delete some keyword print \%food\n";

while((my $key,my $value)=each%food) {
  print "$key=>$value\n";
}
  • Output
/home/Young> perl hash.pl   
Young
fruit=>apple
drink=>Coco
bananaapplefruitfruit
after delete some keyword print %food
fruit=>apple

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

元直数字电路验证

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值