hb_sz 发表于 2017-5-19 08:07:16

神奇的perl-哈希和数组(5)

声明:本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
1.1         第三个任务

BOSS交给小张一个文本文件,为去年销售人员季度完成的销售额,要求小张统计出前三名做为金牌销售员人选。
张三 25  9   10  60
李四 17  16  79  25
黄三 5  10  5   2
黄光 10  3   6   9
刘发 6   5   9   12
以上文件文件第一列是姓名,第二列是第一季度销售额,第三列是第二季度销售额,第四列是第三季度销售额,第五列是第四季度销售额,每列用tab分隔。
完成这个任务需要用到内嵌哈希。
内嵌哈希的遍历语法如下:
while (( $键名,$键值)=each %哈希变量名){
#对取出的键名值进行操作,其中键值是内嵌哈希的引用。
#访问内嵌哈希键值的语法为:${$键值}{$内嵌哈希的键名};
}
 
我们先计算每个人的全年的总销售额并输出:
#perl3-5.pl
use strict;
use warnings;
use 5.010;
my  %p;
 
open PINFO,"<perl3-5.txt";
#从perl3-5.txt文件中读成员的姓名及城市信息
foreach my $pinfo(<PINFO>){
         chomp($pinfo);
          my  %info;
      (my $name, my $jd1,my $jd2,my $jd3,my $jd4)=split('\t',$pinfo);
      $info{jd1}= $jd1;
      $info{jd2}= $jd2;
      $info{jd3}= $jd3;
      $info{jd4}= $jd4;
      $info{all}= $jd1+$jd2+$jd3+$jd4;
      $p{$name}=\%info;
}
close PINFO;
while  ((my $key,my $value)=each  %p){
        say "$key=>${$value}{all}";
}
结果如下:
刘发=>32
张三=>104
李四=>137
黄光=>28
黄三=>22
页: [1]
查看完整版本: 神奇的perl-哈希和数组(5)