网上看到一道题,内容如下。123456 23 1000234567 34 1234345678 21 1234456789 45 4532234567 34 1233234567 34 1234345678 21 3445其中第一列为ID号 第二列为级别 第三列为时间题目要求,写一个脚本处理文本,处理结果为第一列显示ID第二列过滤级别<30或者级别>40第三列显示内容为,若为相同的ID号,计算时间之和
总觉得这个题目有点问题,数据有点不对应,不多说了,直接上代码
#!/bin/env perl# -*- Coding: utf-8 -*-use strict;my %hash;while (<DATA>) { chomp; next if /^$|^#/; my @array = split; if ($array[1] < 30 || $array[1] > 40) { push @{$hash{"$array[0]\t$array[1]\t"}},$array[2]; }}for my $num (sort keys %hash) { my @a = @{$hash{$num}}; printf "%d",$num; printf sum(\@a); printf "\n";}sub sum { my ($ref) = @_; my $i = 0; for (@$ref) { $i += $_; } return $i;}__DATA__123456 23 1000234567 34 1234345678 21 1234456789 45 4532234567 34 1233234567 34 1234345678 21 3445
运行结果:
123456 23 1000345678 21 4679456789 45 4532总结
以上是内存溢出为你收集整理的perl的魅力全部内容,希望文章能够帮你解决perl的魅力所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)