for中的自变量不能定义为局部变量?



QUOTE:
原帖由 每日一瓜 于 2008-12-10 10:51 发表
脚本中有for循环:
for($i=0;$i

perl 里面的变量尽量采用局部变量,强烈建议我们使用 use strict。


QUOTE:
原帖由 每日一瓜 于 2008-12-10 12:09 发表
然后不行

怎么个不行法?你期望什么结果?得到了什么?
对于不使用use strict的代码无视


QUOTE:
原帖由 MMMIX 于 2008-12-10 14:05 发表

怎么个不行法?你期望什么结果?得到了什么?

现在可以了,我加上了use strict,在每个for里面都写了my,
for(my $i=0;$i<......

不喜欢use warnings;会报出很多变量没有初始化的错误,在程序开发阶段很影响debug,搞得一屏幕都是warning看不清楚。
(喜欢利用undef的值)


QUOTE:
原帖由 每日一瓜 于 2008-12-10 15:50 发表
不喜欢use warnings;会报出很多变量没有初始化的错误,在程序开发阶段很影响debug,搞得一屏幕都是warning看不清楚。

这恰好说明了你的代码从一开始写的就有问题。


QUOTE:
原帖由 每日一瓜 于 2008-12-10 15:50 发表

现在可以了,我加上了use strict,在每个for里面都写了my,
for(my $i=0;$i

良好的编程习惯很重要的


QUOTE:
原帖由 MMMIX 于 2008-12-10 15:52 发表

这恰好说明了你的代码从一开始写的就有问题。

<Perl语言入门>里面建议使用者利用undef的值,
规范的perl编程会把每个变量定义的时候就设个初始值吗?


QUOTE:
原帖由 每日一瓜 于 2008-12-11 09:40 发表

里面建议使用者利用undef的值,
规范的perl编程会把每个变量定义的时候就设个初始值吗?

利用/使用 undef 和 use strict/warnings 并不冲突的。使用 use strict/warnings 后给出的警告/错误,一般都是由于你的代码写的有问题。



QUOTE:
原帖由 每日一瓜 于 2008-12-11 09:40 发表

里面建议使用者利用undef的值,
规范的perl编程会把每个变量定义的时候就设个初始值吗?

看你怎么利用 undef 了。
我也经常利用 undef,不过都是用来做逻辑判断,或者 not defined 测试用的。
布尔上下文中使用 undef 不会报错的。
但是字符串啊,数字啊,就会报错,这时就如同 MMMIX 所说,恰好说明你的程序是有问题的。
平时我都用use strict;没啥问题,但一用use warnings;就一大堆警告。