免费注册 查看新帖 |

Chinaunix

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

Use of uninitialized value in numeric lt [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-09-24 08:44 |只看该作者 |倒序浏览
这是71行的语句   for(my $pos0=1;$pos0<$chrlen{$chr};$pos0+=$sliding) {
一直提示 Use of uninitialized value in numeric lt (<) at correct_cal_diversity.pl line 71
这是什么意思?

论坛徽章:
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
2 [报告]
发表于 2015-09-24 09:05 |只看该作者
提醒你 $chrlen{$chr} 返回值是 undef,这个键可能根本不存在,也有可能他的值本身就是 undef 不管哪个原因做数字比较都是不合理的

Use of uninitialized value at ... 这类警告都是 undef 值出现在了错误的位置(比如不该做数字运算,不该插入字符串,不该做比较),很可能是程序出 bug 了

论坛徽章:
0
3 [报告]
发表于 2015-09-24 10:10 |只看该作者
非常感谢您的回答!很奇怪的是用别人的数据能跑起来,而我的数据就老是报这个错误,可是两个数据类型几乎都是一样的。。。回复 2# zhlong8


   

论坛徽章:
10
2015亚冠之广州富力
日期:2015-06-16 14:44:332015亚冠之西悉尼流浪者
日期:2015-08-19 13:14:352015亚冠之阿尔希拉尔
日期:2015-08-04 09:38:052015亚冠之萨济拖拉机
日期:2015-07-31 15:01:582015亚冠之首尔
日期:2015-07-27 14:24:312015亚冠之塔什干火车头
日期:2015-07-20 09:47:202015亚冠之布里斯班狮吼
日期:2015-07-15 14:58:432015亚冠之首尔
日期:2015-07-07 09:31:262015亚冠之广州恒大
日期:2015-07-06 15:41:272015亚冠之首尔
日期:2015-08-27 11:03:01
4 [报告]
发表于 2015-09-24 10:21 |只看该作者
你print一下这个值就知道了哈,给你指出了你就要进行下一步,不用纠结错误

论坛徽章:
0
5 [报告]
发表于 2015-09-24 10:46 |只看该作者
回复 4# xiaoxingan99
您说的是什么意思?我完全小白一个。。。
$chrlen那一列是数字,是不是就像2楼说的一样,我给的数字不是数字?

   

论坛徽章:
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
6 [报告]
发表于 2015-09-24 11:01 |只看该作者
出现这个警告100%是代码有缺陷,你需要一点点debug技巧,比如把这个 $chrlen{$chr} 给显示出来再查数据查代码。

我猜就是 $chr 不在 %chrlen 这个 hash 里面,是不是没有去掉尾部的换行符或空格?大小写没有统一?

论坛徽章:
10
2015亚冠之广州富力
日期:2015-06-16 14:44:332015亚冠之西悉尼流浪者
日期:2015-08-19 13:14:352015亚冠之阿尔希拉尔
日期:2015-08-04 09:38:052015亚冠之萨济拖拉机
日期:2015-07-31 15:01:582015亚冠之首尔
日期:2015-07-27 14:24:312015亚冠之塔什干火车头
日期:2015-07-20 09:47:202015亚冠之布里斯班狮吼
日期:2015-07-15 14:58:432015亚冠之首尔
日期:2015-07-07 09:31:262015亚冠之广州恒大
日期:2015-07-06 15:41:272015亚冠之首尔
日期:2015-08-27 11:03:01
7 [报告]
发表于 2015-09-24 11:08 |只看该作者
回复 5# John_Blackman


print   "--------$chrlen{$chr}------------\n";
这句你加到循环之前试试,看看能打印出东西么
如果你print也不知道的话,我还是建议你先看看perl教程,然后再搞程序,否则你得累死

论坛徽章:
0
8 [报告]
发表于 2015-09-24 13:57 |只看该作者
回复 7# xiaoxingan99
谢谢大家的回复,上午突然之间弄好了。是因为我的输入文件名有下划线_,我把其中的一段贴出来:
my $window=$opts{x};
my $sliding=$opts{s};  # ==chr_len
###my $chr=$opts{n};
my $prefix = $opts{o};
my $tag=$opts{m};

my %chrlen;
open IN,"$opts{l}" or die "the chr length file can't open!\n";
while(<IN> {
        chomp;
        #if(/$chr/){
                my @temp=split;       
                $chrlen{$temp[0]}=$temp[1];
        #}
}
close IN;

open SC,"$opts{c}" or die "The custom SNP file can't open!\n";
open SW,"$opts{w}" or die "The wild SNP file can't open!\n";
my ($nc,$nw,@t,@m);
@t=split /\t/,scalar <SC>;
$nc=$t[7]+$t[8];
seek SC,0,0;
@m=split /\t/,scalar <SW>;
$nw=$m[7]+$m[8];
seek SW,0,0;
my %SNP;
my ($SC,$SW,$pc,$pw);
while (<SC> {
        chomp;
        my @temp=(split /\t/,$_)[1,7,8,2,5,6,0];     # my ($pos,$nbase1,$nbase2,$ref,$base1,$base2,$chr)=(split /\t/,$_)[1,7,8,2,5,6,0];
        @{${$SNP{$temp[-1]}{$temp[0]}}[0]}=@temp;
}
close SC;

while (<SW> {
        chomp;
        my @tem=(split /\t/,$_)[1,7,8,2,5,6,0];
        @{${$SNP{$tem[-1]}{$tem[0]}}[1]}=@tem;
}
close SW;

open OUT,">$opts{o}.diversity" or die "the diversity result can't write!\n";
foreach my $chr (sort keys %SNP){
for(my $pos0=1;$pos0<$chrlen{$chr};$pos0+=$sliding) {
上面最后一行就是报错的地方,这是为什么呢?


   

论坛徽章:
10
2015亚冠之广州富力
日期:2015-06-16 14:44:332015亚冠之西悉尼流浪者
日期:2015-08-19 13:14:352015亚冠之阿尔希拉尔
日期:2015-08-04 09:38:052015亚冠之萨济拖拉机
日期:2015-07-31 15:01:582015亚冠之首尔
日期:2015-07-27 14:24:312015亚冠之塔什干火车头
日期:2015-07-20 09:47:202015亚冠之布里斯班狮吼
日期:2015-07-15 14:58:432015亚冠之首尔
日期:2015-07-07 09:31:262015亚冠之广州恒大
日期:2015-07-06 15:41:272015亚冠之首尔
日期:2015-08-27 11:03:01
9 [报告]
发表于 2015-09-24 15:29 |只看该作者
到底弄好了还是没弄好呢?
而且让你加上的那句你也没加啊
另外,如果你是要学perl的话,不建议你直接看这么繁琐的hash,水平有限,我也看晕了
如果你只是为了解决工作上的问题,等着有耐心的高手教你吧

论坛徽章:
0
10 [报告]
发表于 2015-09-24 16:00 |只看该作者
多谢回复,弄好了。其中一个输入文件名有下划线,结果就一直报错。不知道为什么。回复 9# xiaoxingan99


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP