为什么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";
}
}
}
有这两个文件
"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
zhlong8 发表于 2011-05-29 16:09
这个是我转移过来输错了,不是这个问题
作者: feiyue0908 发布时间: 2011-05-29
QUOTE:
这个是我转移过来输错了,不是这个问题
feiyue0908 发表于 2011-05-29 16:10
feiyue0908 发表于 2011-05-29 16:10
那我再告诉你我是动手派,亲自试了改了那三个中文标点后结果是正确的,然后才说的
作者: zhlong8 发布时间: 2011-05-29
QUOTE:
那我再告诉你我是动手派,亲自试了改了那三个中文标点后结果是正确的,然后才说的
zhlong8 发表于 2011-05-29 16:19
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
我是在大型机linux系统下上运行的版本是5.8.8,没有输出结果
我在本地 ...
feiyue0908 发表于 2011-05-29 16:29
5.8.8不至于有那么低级的 bug,你多加几个 print 调试下
作者: zhlong8 发布时间: 2011-05-29
chomp是混蛋。。。。
作者: toniz 发布时间: 2011-05-29