use warnings有什么作用?

use warnings有什么作用?

my @t=[split /,/];
if($t[1]=~/99/){         
#使用了use warnings后程序报$t[1]未初始化的错:Use of uninitialized value in pattern match (m//) at tmp.pl line 50.
…………
就是这个作用喽。
难道你不认为这是你考虑疏忽的地方吗?
它帮你指出来,这是在帮你,不是在故意和你作梗。
帮你发现错误

use strict 能帮你少犯错误
晕,$t[1]怎么没初始化呀,perl不是有什么上下文的吗?上文已经有@t了,下文$t[1]也应该清楚是什么才对呀。
@t 和 $t[12580] 是两个不同的对象。
前者只是个容器。
因此 @t 定义了 $t[12580] 未必会定义。而且就算是 $t[12580] 也定义了,难道就能说明 $t[36917] 也定义了?
不过perl应该知道@t的大小才对呀,如果知道了,那么也就能判断$t[$x]中$x的值是否符合了


QUOTE:
原帖由 dl0622 于 2008-12-1 11:30 发表
不过perl应该知道@t的大小才对呀,如果知道了,那么也就能判断$t[$x]中$x的值是否符合了

版主说的很清楚啦

@array 定义了,并不是说@array里的元素就定义了,完全可以 $array[0] 未定义而 $array[1] 定义了。


QUOTE:
原帖由 dl0622 于 2008-12-1 11:30 发表
不过perl应该知道@t的大小才对呀,

它当然知道。

QUOTE:
如果知道了,那么也就能判断$t[$x]中$x的值是否符合了

没错。BTW,Perl 中的 array 是可以动态增长的。

可是这些和你的问题有什么关系?