Perl中hash的用法

申明hash变量:

my %Student; 

#其中Student为学生哈希,Key值为学生学号,对应的hash值为分数

 

示例1:

直接赋值:%Student = {"200711", 90, "200712", 85, ..., "200730",66};

或格式为:%Student = {"200711"=>90,

                      "200712"=>85,

                       ...,

                      "200730"=>66,};

其中用第二种格式时注意}前的逗号。

 

示例2:

#得到所有keys,顺序取决于hash函数,或者说是乱序
my @all_keys = keys %Student;
# 所有键值,是按hash的值从大往小排列的。值的比较是数字比较(比如说,10 > 9)
my @all_keys = sort{$Student{$b}<=>$Student{$a}} (keys %Student);
# 所有键值,是按hash的值从小往大排列的。值的比较是数字比较
my @all_keys = sort{$Student{$a}<=>$students{$b}} (keys %Student);
# 所有键值,是按hash的值从小往大排列的。值的比较是字符串比较
#(比如说,'abc' < 'bcd')
my @all_keys = sort{$Student{$a} cmp $Student{$b}} (keys %Student);

 

示例3:给出已知所有Key值(存于一个txt文本中),来建立一个只有Key值,没有对应的hash值的哈希表:

#!/usr/bin/perl -w

use strict;

open fp1,"Student_num.txt";  #打开每行一个学号的文本文档

my @data1 = <fp1>;           #读入每个学号,存于数组中
my %Student;                 #申明hash变量

foreach(@data1)
{
 chomp;
 $Student{$_} = 0;           #假设初值都设置为0
 print "$_\n";
}
foreach(@data1)
{
 chomp;
 my $tmp = $Student{$_};
 print "$_\t$tmp\n";
}

若输入文本Student_num.txt为:

200701

200702

200703

则以上程序输出为:

200701    0

200702    0

200703    0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值