免费注册 查看新帖 |

Chinaunix

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

不知道是linux与windows的区别还是什么原因?? [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-11-21 11:17 |只看该作者 |倒序浏览
我想处理这样的文本:
文本a.txt:
A  hdaiu  dhasidhi 1   5
B  dhas    dhaoo   6    12
B  djasoj   dhao   13   20
文本b.txt:
A 1
B 8
B 15
目的是生成这样的文件:
B 8
B 15
即提取b中第一列与a中的相同且第二列在a文件的第四列和第五列两个数字间的。
自己写的程序如下:
#!/usr/bin/perl -w
open FILE,"a.txt";
open VI,"b.txt";

while(<FILE>{
   chomp;
   @hello=split;
   $a=$hello[3];
   $b=$hello[4];
   $c=$hello[0];
   push @li,$c;
   push @hi,$a;
   push @ji,$b;
   }
   while (<VI>{
  chomp;
   @name=split;
   for($j=0;$j<=$#hi;$j++){
        if (($name[0] eq $li[$j])&&($hi[$j]<$name[1])&&($name[1]<$ji[$j])){    #此处
                 $number++;
       print   $_,"\n";
     }
   }
  }print  "CDSnumber\n";
     close FILE;
     close VI;
         该程序在windows下检测运行正常,但是在linux上运行,如果使用-w会在#此处的位置报错如下:
        Use of uninitialized value in string eq at CDS_dui.pl line 19, <VI> line 1.
     如果去掉-w,程序会运行,但是top后的RES状态会不再增加,生成的文件也不全,似乎有点无限的运行下去的意思。
实在没找到错误,求指点!!

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
2 [报告]
发表于 2012-11-21 11:58 |只看该作者
为啥你们都这么喜欢用 $_ 呢?

你有个变量没有初始化. 可我看不懂你的程序.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP