为什么exsits函数不管用

本帖最后由 feiyue0908 于 2011-05-29 16:13 编辑

有这两个文件
"input1"
11501362
171
10309943
721737
1115374


"input2"
rsId="1115374"
rsId="721737"
rsId="35679"
rsId="8745332"


查找input2的数字中是否在input1中,然后输出。但是程序不运行成功,看了好长时间也找不到问题。



程序
#!/usr/bin/perl -w

use strict;
my %hash;
open (IN1,"input1");
while (<IN1>) {
        chomp;
        $hash{$_}++;
}
close IN1;


open (IN2,"input2");

while (<IN2>) {
        chomp;
        if (/rsId=\"(\d+)\"/) {
                my $snp=$1;
                chomp ($snp);
                if (exists $hash{$snp}) {
                        print "rsId=","$snp","\n";
                }
        }
}

作者: feiyue0908   发布时间: 2011-05-29

你都用 -w 了难道看不出来是什么原因? print “rsID=”,"$snp","\n"; 用中文标点编程……

作者: zhlong8   发布时间: 2011-05-29



QUOTE:
你都用 -w 了难道看不出来是什么原因? print “rsID=”,"$snp","\n"; 用中文标点编程……
zhlong8 发表于 2011-05-29 16:09




    这个是我转移过来输错了,不是这个问题

作者: feiyue0908   发布时间: 2011-05-29



QUOTE:
这个是我转移过来输错了,不是这个问题
feiyue0908 发表于 2011-05-29 16:10




    那我再告诉你我是动手派,亲自试了改了那三个中文标点后结果是正确的,然后才说的

作者: zhlong8   发布时间: 2011-05-29



QUOTE:
那我再告诉你我是动手派,亲自试了改了那三个中文标点后结果是正确的,然后才说的
zhlong8 发表于 2011-05-29 16:19



找到问题了,但不确定,谢谢!
我是在大型机linux系统下上运行的版本是5.8.8,没有输出结果
我在本地windows电脑下运行了一下,程序运行成功,版本5.10.0

难道exists与perl版本有关系?

作者: feiyue0908   发布时间: 2011-05-29



QUOTE:
找到问题了,但不确定,谢谢!
我是在大型机linux系统下上运行的版本是5.8.8,没有输出结果
我在本地 ...
feiyue0908 发表于 2011-05-29 16:29




    5.8.8不至于有那么低级的 bug,你多加几个 print 调试下

作者: zhlong8   发布时间: 2011-05-29

chomp是混蛋。。。。

作者: toniz   发布时间: 2011-05-29