perl使用$读取文件中的每一行不起作用
我正在读《开始Perl:Simon Cozen的在线书籍》。在下面的代码中,“打印注释”打印data.txt文件的所有行。但是我的while循环不打印任何内容。请帮我解决这个问题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=;
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-argopen
,执行错误检查,并使用词法文件句柄而不是裸字文件句柄:open my$fh',请注意,您应该使用3-argopen
,执行错误检查,并使用词法文件句柄而不是裸字文件句柄:open my$fh,'