perl程序出错,求高手解答。
foreach循环里面出错,提示信息是使用未初始化变量。程序主要目的是求两个表的并集,最后打印出两个中某些信息。...
foreach循环里面出错,提示信息是使用未初始化变量。
程序主要目的是求两个表的并集,最后打印出两个中某些信息。 展开
程序主要目的是求两个表的并集,最后打印出两个中某些信息。 展开
3个回答
展开全部
简单来说, 这是因为你加了 -w 和 use warnings. 你不用这个就会天下太平了.
不过, 话分两头, 以你现在用的数据结构, 很容易会出现一种叫 auto vivification 的情况 ( 中文不知道叫甚麼, 但是你不会想要的 ), 例如 :
%c = ();
print 1 if $c{X} ;
print "Keys are: <" , keys (%c), ">$/";
print "正常$/";
print 1 if ( $c{X}{Y} ) ;
print "Keys are: <" , keys (%c), ">$/";
print "X 从那里来??!$/";
当你想查询有没有 Y 这个键时, X 就会自动产生了. 因为 perl 相信你认为需要有 X 这个键.
-w 和 warnings 就是怕你会有这样的情况, 所以,
你得为每个想用到的变数都得先设定个初始值, 那怕是 undef
不过, 我这里就不帮你 debug 了. 因为 :
1) 你只贴图, 又不贴代码... 我是不会帮你打一遍的
2) 你出现问题的是 line 58, 但你又不贴第 58 行出甚麼事. 爱莫能助了
不过, 话分两头, 以你现在用的数据结构, 很容易会出现一种叫 auto vivification 的情况 ( 中文不知道叫甚麼, 但是你不会想要的 ), 例如 :
%c = ();
print 1 if $c{X} ;
print "Keys are: <" , keys (%c), ">$/";
print "正常$/";
print 1 if ( $c{X}{Y} ) ;
print "Keys are: <" , keys (%c), ">$/";
print "X 从那里来??!$/";
当你想查询有没有 Y 这个键时, X 就会自动产生了. 因为 perl 相信你认为需要有 X 这个键.
-w 和 warnings 就是怕你会有这样的情况, 所以,
你得为每个想用到的变数都得先设定个初始值, 那怕是 undef
不过, 我这里就不帮你 debug 了. 因为 :
1) 你只贴图, 又不贴代码... 我是不会帮你打一遍的
2) 你出现问题的是 line 58, 但你又不贴第 58 行出甚麼事. 爱莫能助了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询