免费注册 查看新帖 |

Chinaunix

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

[求助]为啥我这个函数要报警告? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-07-14 10:08 |只看该作者 |倒序浏览
  1. sub Create_ID_File {

  2.   my ($id, $TL_File, $TL_H_File) = @_;
  3.   my $Input_Line;
  4.   my $Iterator_I=0;
  5.   my $Iterator_J=0;
  6.   my @Id_Array = ();
  7.   
  8.   # Get id
  9.   @Id_Array=split(",",$id);
  10.   @Id_Array=sort { $a <=> $b } @Id_Array;
  11.   
  12.   unless(open(TL_H_File, "< $TL_H_File")) {
  13.     print STDERR "Failed to open $TL_H_File";
  14.     return API_FAIL;
  15.   }  
  16.   
  17.   if (-e $TL_File) {
  18.       unlink $TL_File;
  19.   }
  20.   
  21.   unless(open(TL, "> $TL_File")) {
  22.     print STDERR "Failed to open $TL_File";
  23.     return API_FAIL;
  24.   }  
  25.   
  26.   $Iterator_I=0;
  27.   $Iterator_J=0;

  28.   while ( $Input_Line = <TL_H_File> ) {
  29.     chomp $Input_Line;   
  30.     if ($Input_Line =~ m/\s*\'cmdline\'\s*=>\s*\'(.*)\',$/) {
  31.       if ($Iterator_I == $Id_Array[$Iterator_J]) {
  32.         print TL "TEST = $1\n";
  33.         # 如果我有下面这行,那就会有警告,如果注销下面这行,就没有。。。
  34.         $Iterator_J++;
  35.       }  
  36.       $Iterator_I++;        
  37.     }   
  38.   }   
  39.    
  40.   close(TL_H_File);
  41.   close(TL);
  42.    
  43.   return API_SUCCESS;  
  44. }
复制代码
警告就是:
Use of uninitialized value in numeric eq (==) at log.pl line 381, <TL_H_File> line 79.
Use of uninitialized value in numeric eq (==) at log.pl line 381, <TL_H_File> line 87.
Use of uninitialized value in numeric eq (==) at log.pl line 381, <TL_H_File> line 95.
Use of uninitialized value in numeric eq (==) at log.pl line 381, <TL_H_File> line 103.
.... (很多很多,每个匹配 m/\s*\'cmdline\'\s*=>\s*\'(.*)\',$/到行都会报这个警告)

381行是: if ($Iterator_I == $Id_Array[$Iterator_J]) {

请大家帮忙,谢谢!

论坛徽章:
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 [报告]
发表于 2011-07-14 10:13 |只看该作者

论坛徽章:
0
3 [报告]
发表于 2011-07-14 10:59 |只看该作者
回复 2# zhlong8


    斑竹,帖子我看了,收益良多,但是我上面帖子到问题,好像仍然无法对你到帖子讲到情况对号入座。
    我上面到函数,每个变量都是初始化了到呀~~~怎么还是报错了?
    请帮忙,谢谢!

论坛徽章:
0
4 [报告]
发表于 2011-07-14 11:19 |只看该作者
回复  zhlong8


    斑竹,帖子我看了,收益良多,但是我上面帖子到问题,好像仍然无法对你到帖子讲到 ...
brantc 发表于 2011-07-14 10:59



    如果你确定你初始化了用到的变量值,就打印一下贴出来看看咯

论坛徽章:
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
5 [报告]
发表于 2011-07-14 11:31 |只看该作者
回复  zhlong8


    斑竹,帖子我看了,收益良多,但是我上面帖子到问题,好像仍然无法对你到帖子讲到 ...
brantc 发表于 2011-07-14 10:59



    像4楼说的,这个主要是让你能明白这个警告的设计原因和什么情况下会触发,最终目的是方便 debug 简称教你打渔

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
6 [报告]
发表于 2011-07-14 15:21 |只看该作者
回复  zhlong8


    斑竹,帖子我看了,收益良多,但是我上面帖子到问题,好像仍然无法对你到帖子讲到 ...
brantc 发表于 2011-07-14 10:59



          if ($Iterator_I == $Id_Array[$Iterator_J])   <=== issue here


=================
# cat t.pl

use strict;
use warnings;

my @name=();
my $val = $name[1];   #真正问题.....
print $val;

# perl t.pl
Use of uninitialized value in print at t.pl line 7.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP