免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3026 | 回复: 14
打印 上一主题 下一主题

【求助】一个简单的hash程序计数程序,开启strict导致报错。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-13 10:01 |只看该作者 |倒序浏览
本帖最后由 10prince 于 2012-03-13 10:04 编辑

各位大牛好,本人是perl的新手~  这是一门令我神往的语言。在小骆驼的书里, 遇见问题了,特来论坛求助:

Q1:以下这个程序,我开了 use strict就报错;
Q2:变量定义,变量使用也有问题。  在程序块外面,循环外面,怎么来内插变量?

请看程序吧! 用砖石符,把读入的文件每一行的每一个有效单词进行计数。

#!/usr/bin/perl
use warnings;
#use strict;

while (<>){
  foreach (split){
    $total = 0;
    $total++;
    next if /\W/ ;
    $valid = 0;
    $valid++;
    #%count;
    $count{$_}++;
  }
}
print "total things = $total, valid words = $valid\n";

foreach my $word (sort keys %count){
  print "$word \t\t has $count{$word} times\n";
}



论坛比较冷清,请大家赐教,多谢啦!!

论坛徽章:
0
2 [报告]
发表于 2012-03-13 10:04 |只看该作者
  1. my $otal = 0;
  2. my $valid = 0;
复制代码

论坛徽章:
0
3 [报告]
发表于 2012-03-13 10:06 |只看该作者
llbgurs 发表于 2012-03-13 10:04


在循环的程序外,需要内插这几个变量啊~~  使用my的话,这里就print不出来啦!

论坛徽章:
0
4 [报告]
发表于 2012-03-13 10:07 |只看该作者
回复 3# 10prince
那就在while外面定义啊

   

论坛徽章:
0
5 [报告]
发表于 2012-03-13 10:09 |只看该作者
llbgurs 发表于 2012-03-13 10:07
回复 3# 10prince
那就在while外面定义啊


囧~  while 外面定义????

这不是为了把while循环读到的行,单词,给计算出来嘛 ...  还是我没理解你的意思


请把程序改一下贴出来呗   多谢啦!

论坛徽章:
0
6 [报告]
发表于 2012-03-13 10:22 |只看该作者
  1. use strict;

  2. my $total;
  3. my $valid;
  4. my %count;

  5. while (<>){
  6.   foreach (split){
  7.     $total = 0;
  8.     $total++;
  9.     next if /\W/ ;
  10.     $valid = 0;
  11.     $valid++;
  12.     #%count;
  13.     $count{$_}++;
  14.   }
  15. }
  16. print "total things = $total, valid words = $valid\n";

  17. foreach my $word (sort keys %count){
  18.   print "$word \t\t has $count{$word} times\n";
  19. }
复制代码

论坛徽章:
0
7 [报告]
发表于 2012-03-13 10:28 |只看该作者
楼上的亲~~我搞定啦! 多谢啦!!

哎,我太菜啦!  一点都不会变通啊!!!     

十分感谢!!!

论坛徽章:
0
8 [报告]
发表于 2012-03-13 10:29 |只看该作者
llbgurs 发表于 2012-03-13 10:22



多谢!

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
9 [报告]
发表于 2012-03-13 10:31 |只看该作者
你确定你看的是小骆驼?它应该说了 my 和 use strict; 的关系吧

论坛徽章:
0
10 [报告]
发表于 2012-03-13 15:32 |只看该作者
zhlong8 发表于 2012-03-13 10:31
你确定你看的是小骆驼?它应该说了 my 和 use strict; 的关系吧


是我提问没说清楚,又比较菜~ 在笨蛋也知道自己看的是神马书吧~   起码看图还能认识小动物的

我加了  strict , 用了my (在while 循环内定义的变量) ,循环外面的的变量内插没法打印出来值~~

不知道可以把  my  xxx = xxxx ; 单独写在程序开始的部分 .

PS: 版主说话有火药味~  这是perl的风格嘛  
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP