免费注册 查看新帖 |

Chinaunix

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

perl变量未初始化 [复制链接]

论坛徽章:
2
巨蟹座
日期:2014-05-21 16:42:40巳蛇
日期:2014-05-22 08:44:29
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-06-11 22:02 |只看该作者 |倒序浏览
哪位大侠帮忙看一下我的程序代码到底哪里出问题了啊?perl老是提示 “use of uninitiated value $number1 in numeric gt (>) at countindel.pl line11”和“use of uninitiated value $number1 in numeric gt (>) at countindel.pl line11”,到底是哪里出错了呢?

#! usr/bin/perl -w

use warnings;
open (IN, "try2.txt") or die "Can not open try2.txt for reading: $!";
while (<IN>)
{         $line=$_;
        my ($first, $second)=($line =~ /chr\d+ \d+\s*\. (\w+) (\w+) \d+/);
        my $number1=length($first);
        my $number2=length($second);
        if ($number1>$number2)
        {print "0\n";}
        else
        {print "1\n";}
}
close IN or die "Can not close file";

论坛徽章:
0
2 [报告]
发表于 2013-06-11 22:10 |只看该作者
my ($first, $second)=($line =~ /chr\d+ \d+\s*\. (\w+) (\w+) \d+/);

这一句

论坛徽章:
2
巨蟹座
日期:2014-05-21 16:42:40巳蛇
日期:2014-05-22 08:44:29
3 [报告]
发表于 2013-06-11 22:17 |只看该作者
还是不甚明白,能稍微详细一点么...刚刚开始学习perl不久...

论坛徽章:
0
4 [报告]
发表于 2013-06-11 22:38 |只看该作者
回复 3# skyyy90


    my ($first, $second)=($line =~ /chr\d+ \d+\s*\. (\w+) (\w+) \d+/) or die "bad matching";

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
5 [报告]
发表于 2013-06-12 16:55 |只看该作者
shalk11 发表于 2013-06-11 18:10
my ($first, $second)=($line =~ /chr\d+ \d+\s*\. (\w+) (\w+) \d+/);

这一句

3Q~

论坛徽章:
0
6 [报告]
发表于 2013-06-13 09:21 |只看该作者
到底哪错了,就一句搞定?

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
7 [报告]
发表于 2013-06-13 15:14 |只看该作者
use of uninitiated value $number1 in numeric gt (>) at countindel.pl line11
=>
  1. if ($number1>$number2)
复制代码
=>
  1. my $number1=length($first);
复制代码
=>
  1. my ($first, $second)=($line =~ /chr\d+ \d+\s*\. (\w+) (\w+) \d+/);
复制代码

论坛徽章:
2
巨蟹座
日期:2014-05-21 16:42:40巳蛇
日期:2014-05-22 08:44:29
8 [报告]
发表于 2013-06-16 14:56 |只看该作者
有高手给点建议吗?

论坛徽章:
0
9 [报告]
发表于 2013-06-17 11:00 |只看该作者
  1 #!usr/bin/perl -w
  2
  3 use warnings;
  4 open (IN, "t.txt") or die "Can not open try2.txt for reading: $!";
  5 while (<IN>)
  6 {         $line=$_;
  7         $line =~ /chr\d+ \d+\s*\. (\w+) (\w+) \d+/;
  8         if(!($1&&$2)){
  9                 print "no match\n";
10                 exit 0;
11         }
12         my $number1=length($1);
13         my $number2=length($2);
14         if ($number1>$number2)
15         {print "0\n";}
16         else
17         {print "1\n";}
18 }
19 close IN or die "Can not close file";

返回结果在$1,$2这两个默认变量里,话说是不是没匹配到你要的字符串?

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
10 [报告]
发表于 2013-06-18 19:07 |只看该作者
请粘贴你的 try2.txt~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP