免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 24594419 | 回复: 24594419

perl中遍历哈希数组 [复制链接]

论坛徽章:
0
发表于 2013-07-24 17:07 |显示全部楼层
a   b
1   -1
1   2
1   3
2   4
2   5
2   7
3   8
3   9
3   0
就像上面的形式,数组@array(a,b)中,a为key,b为value,a中的值不一定是1,2,3,b中的值也是不一定的怎么写程序来看当key为某一值时,b值在<0,0-5,5-10之间分别有多少个,谢谢各位啦

论坛徽章:
3
摩羯座
日期:2013-09-04 12:01:36申猴
日期:2013-10-23 12:12:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34
发表于 2013-07-24 17:29 |显示全部楼层
@d = <DATA>;
$count;
for(@d){
     ($k,$v) = split;
     if($k==1){
         $count++,next if($v<0);
         $count++,next if($v>0&&$v<=5);
         $count++,next if($v>5&&$v<=10);
     }
}
print "$count";
__DATA__
a   b
1   -1
1   2
1   3
2   4
2   5
2   7
3   8
3   9
3   0

论坛徽章:
6
丑牛
日期:2014-03-21 15:42:04子鼠
日期:2014-04-12 11:50:17处女座
日期:2014-09-01 09:25:1115-16赛季CBA联赛之吉林
日期:2015-12-22 14:01:5215-16赛季CBA联赛之广东
日期:2016-03-08 18:49:422016科比退役纪念章
日期:2016-07-06 12:19:55
发表于 2013-07-24 18:05 |显示全部楼层
本帖最后由 stanley_tam 于 2013-07-24 18:19 编辑

这个东西,很眼熟啊。

论坛徽章:
3
摩羯座
日期:2013-09-04 12:01:36申猴
日期:2013-10-23 12:12:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34
发表于 2013-07-24 18:11 |显示全部楼层
等下班无聊给你写个哈!

论坛徽章:
0
发表于 2013-07-24 19:10 |显示全部楼层
是啊  好眼熟偶 但是需求有变额  不只是要显示出来还需要再次统计相应的值额回复 3# stanley_tam


   

论坛徽章:
0
发表于 2013-07-24 19:28 |显示全部楼层
本帖最后由 zengxuli 于 2013-07-24 19:29 编辑

回复 5# zengxuli


   

论坛徽章:
0
发表于 2013-07-24 19:29 |显示全部楼层
阿偶 对了  偶的是1083915327哈回复 3# stanley_tam


   

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
发表于 2013-07-24 22:46 |显示全部楼层
本帖最后由 rubyish 于 2013-07-24 18:47 编辑
  1. #!/usr/bin/perl
  2. use 5.018;
  3. my %A;
  4. while (<DATA>) {
  5.     my ( $k, $v ) = split;
  6.     push @{ $A{$k} }, $v;
  7. }

  8. sub CCC {
  9.     my ( $k, $h, $t ) = @_;
  10.     "b值 $k 在 $h-$t 之间有\t",
  11.     scalar grep { $_ >= $h && $_ <= $t } @{ $A{$k} };
  12. }
  13. __DATA__
  14. 1   -1
  15. 1   2
  16. 1   3
  17. 2   4
  18. 2   5
  19. 2   7
  20. 3   8
  21. 3   9
  22. 3   0
复制代码

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
发表于 2013-07-24 22:48 |显示全部楼层
  1. say CCC 1, 0, 5;
  2. say CCC 3, 0, 5;
  3. say CCC 3, 5, 10;
  4. say CCC 2, 7, 25;
  5. say CCC 1, -999, 0;
复制代码
  1. b值 1 在 0-5 之间有     2
  2. b值 3 在 0-5 之间有     1
  3. b值 3 在 5-10 之间有    2
  4. b值 2 在 7-25 之间有    1
  5. b值 1 在 -999-0 之间有  1
复制代码

论坛徽章:
6
丑牛
日期:2014-03-21 15:42:04子鼠
日期:2014-04-12 11:50:17处女座
日期:2014-09-01 09:25:1115-16赛季CBA联赛之吉林
日期:2015-12-22 14:01:5215-16赛季CBA联赛之广东
日期:2016-03-08 18:49:422016科比退役纪念章
日期:2016-07-06 12:19:55
发表于 2013-07-24 22:58 |显示全部楼层
加了回复 7# zengxuli


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP