Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
perl使用$读取文件中的每一行不起作用_Perl - Fatal编程技术网

perl使用$读取文件中的每一行不起作用

perl使用$读取文件中的每一行不起作用,perl,Perl,我正在读《开始Perl:Simon Cozen的在线书籍》。在下面的代码中,“打印注释”打印data.txt文件的所有行。但是我的while循环不打印任何内容。请帮我解决这个问题 open(FILE,'data.txt'); my $line = <FILE>; my @lines = <FILE>; print @lines; while (<FILE>) { print "$_"; } open(文件'data.txt'); 我的$line=;

我正在读《开始Perl:Simon Cozen的在线书籍》。在下面的代码中,“打印注释”打印data.txt文件的所有行。但是我的while循环不打印任何内容。请帮我解决这个问题

open(FILE,'data.txt');
my $line = <FILE>;
my @lines = <FILE>;
print @lines;

while (<FILE>) {
    print "$_";
}
open(文件'data.txt');
我的$line=;
我的@lines=;
打印@行;
而(){
打印“$”;
}

既然您已经阅读了该文件,现在您已经“到了结尾”,您需要关闭该文件并再次打开它才能回到开始


或者,使用
seek文件,0,seek\u集,以重置回开始位置,而无需关闭并重新打开。(使用
Use Fcntl qw(SEEK_SET);
导入
SEEK_SET

既然您已经阅读了文件,现在您已经“结束”,您需要关闭该文件并再次打开它才能回到起点


或者,使用
seek文件,0,seek\u集,以重置回开始位置,而无需关闭并重新打开。(使用
Use Fcntl qw(SEEK_SET);
导入
SEEK_SET

您也可以执行
SEEK$fh,0,0以获得相同的效果。@stevieb,当然,你可以用一个模糊的魔法数字代替有意义的常数,但那太傻了。原始答案是
查找文件,0,0,自那以后,它已被编辑过几次。我知道“0,0”从那时起就起作用了,我想我们已经有了
SEEK\u CUR
(对我来说这听起来像“current”?现在
SEEK\u SET
这个问题可能是有趣的阅读(对我来说)你也可以做
seek$fh,0,0;
来获得同样的效果。@stevieb,当然,你可以用一个模糊的神奇数字来代替有意义的常数,但那太傻了。最初的答案是
seek文件,0,0;
,从那以后它已经被编辑过几次了。我知道“0,0”从那时起开始工作我想我们已经有了
SEEK\u CUR
(这听起来像是“当前”?现在
SEEK\u SET
这个问题可能是有趣的阅读(对我来说)请注意,您应该使用3-arg
open
,执行错误检查,并使用词法文件句柄而不是裸字文件句柄:
open my$fh',请注意,您应该使用3-arg
open
,执行错误检查,并使用词法文件句柄而不是裸字文件句柄:
open my$fh,'