perl 哈希(hash)学习笔记(一)

1.什么是哈希

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

hash 用% 来标示

2.hash 操作

   a.增加

     my %hash; //定义

  第一种写法:$hash{'author'}="Young";  #author 是关键字,Young 是value     与数组一样,hash作为整体时候是这样%hash 带标示符%,作为单个元素使用要使用$而不是%

     第二种写法: my %food=('fruit',"apple",'drink',"Coco");         #类似数组初始化 注意这里使用的是( )不是{}  {},用了它实际就是创建了一个引用,正确的就是(),圆括号否则会报 Reference found where even-sized list expected at hash.pl line 4.

   第三种写法:my %fruit=(apple=>"fruit",banana=>'fruit');    #     =>是perl运算符,用于hash    

   b.使用hash值

       单个使用:$hash{'author'};         #       $哈希名{$keyword}

       全部使用:foreach $key (keys %food) 

                      {   

                                  print  print "$key=>$food{$key}\n";     #使用keys %food 遍历%food的每一个关键字

                           }      

       获取所有的key:my  @key=keys %fruit;

       获取所有的value:  my @value=values  %fruit;                                           

3.hash 函数 exists 和delete

   判断 某个关键字是否存在 exists $hash{'auther'}

   删除某个关键字 delete %hash{$keyword}

   删除整个hash %hash=();

 

 

实例

#!/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";
}

 

 

结果:

/home/Young> perl hash.pl  
Young
fruit=>apple
drink=>Coco
bananaapplefruitfruit
after delete some keyword print %food
fruit=>apple

 

 

转载请注明出处

     

  

posted @   to be crazy  阅读(36276)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示