请教:关于"Use of uninitialized value"
大家好,我最近在写Perl程序的时候遇到一个问题。这里写了一小段代码用来验证,麻烦请教一下,谢谢!
复制代码
执行程序,运行到最后提示:"Use of uninitialized value in join or string at a.pl line 10, <FILE> line 2."
根据提示是@array数组没定义,后来尝试换一种写法就可以通过。
复制代码
我个人的理解是,执行while循环的时候,Perl会保留foreach循环的"$_"变量的值,当while结束的时候还原"$_"变量。
为什么提示"Use of uninitialized value",麻烦请教一下,谢谢!
- #!/usr/bin/perl -w
- use strict;
- my @array = qw/ file1 file2 /; #定义两个文件
- foreach (@array) {
- open FILE, "< $_" or die $!; #使用默认控制变量"$_"
- while (<FILE>) {
- print; #输出文件的每一行
- }
- }
- print "@array\n"; #打印文件列表
根据提示是@array数组没定义,后来尝试换一种写法就可以通过。
- #!/usr/bin/perl -w
- use strict;
- my @array = qw/ file1 file2 /; #定义两个文件
- my $file; #定义控制变量
- foreach $file (@array) {
- open FILE, "< $file" or die $!; #使用自定义控制变量"$file"
- while (<FILE>) {
- print; #输出文件的每一行
- }
- }
- print "@array\n"; #打印文件列表
为什么提示"Use of uninitialized value",麻烦请教一下,谢谢!
作者: hrbeu06ws 发布时间: 2011-05-28
$_是全局变量,最后@array = ( undef, undef );
作者: yybmsrs 发布时间: 2011-05-28
QUOTE:
$_是全局变量,最后@array = ( undef, undef );
yybmsrs 发表于 2011-05-28 11:40
yybmsrs 发表于 2011-05-28 11:40
"$_"虽说是全局变量,但Perl不是会保留其原先的值,然后再还原么?
@array为何到最后变成undef了呢?
作者: hrbeu06ws 发布时间: 2011-05-28
foreach里面有$_,while里面也有$_,都是同一个$_,怎么保留和还原呢?
while读文件时读到eof后,会继续读直到失败退出,这个值就是undef
while读文件时读到eof后,会继续读直到失败退出,这个值就是undef
作者: yybmsrs 发布时间: 2011-05-28
我记得前几天有个一模一样的问题
作者: zhlong8 发布时间: 2011-05-28