Perl文件读取:在列表上下文中读取时组合多行
我正在使用以下代码读取文件:Perl文件读取:在列表上下文中读取时组合多行,perl,Perl,我正在使用以下代码读取文件: open ($myfile, "<file.txt") or die "Could not open the file"; @lines = <$myfile>; foreach $line (@lines){ print $line; } close myfile; 但程序的输出是: Hellhound on My Trailsuesdudgement Day 看起来代码只读取一行,并用读取的新行替换第一个字符。我尝试了不同的文
open ($myfile, "<file.txt") or die "Could not open the file";
@lines = <$myfile>;
foreach $line (@lines){
print $line;
}
close myfile;
但程序的输出是:
Hellhound on My Trailsuesdudgement Day
看起来代码只读取一行,并用读取的新行替换第一个字符。我尝试了不同的文件。只打印一行,这基本上是所有行的聚合。请检查您的原始脚本和发布的脚本是否相同。 您确实提到最后一行仅由示例程序打印。不会的。它将打印整行 始终放置
使用警告代码>和使用严格代码>位于程序顶部
然后将整个文件存储到数组中,然后从数组中读取是一种非常糟糕的方法。使用while循环代替
open ($myfile, "<","file.txt") or die "Could not open the file";
while(<$myfile>)
{
print ; # Data are store into the default variable $_. So no need to mention the $_ in print statement.
}
如果要将特定数据存储到另一个变量中,请查看字符串($)的连接和数组(@)的推送或取消移动。请检查原始脚本和发布的脚本是否相同。
您确实提到最后一行仅由示例程序打印。不会的。它将打印整行
始终放置使用警告代码>和使用严格代码>位于程序顶部
然后将整个文件存储到数组中,然后从数组中读取是一种非常糟糕的方法。使用while循环代替
open ($myfile, "<","file.txt") or die "Could not open the file";
while(<$myfile>)
{
print ; # Data are store into the default variable $_. So no need to mention the $_ in print statement.
}
如果要将特定数据存储到另一个变量中,请查看字符串($)的串联和数组(@)的推送或取消移位。原始文件在每行末尾只有一个回车符(CR),而它应该有换行符(LF)或者可能是CR和LF,如果它来自Windows系统,并且您正在Linux上阅读它
没有任何新行来分割数据,@lines
只有一个元素,其中包含整个文件内容
如您所见,将该文本打印到终端会导致所有行显示在彼此的顶部
您需要修复文件的创建,但同时可以通过如下更改Perl的记录分隔符来正确读取文件
use strict;
use warnings 'all';
open my $fh, '<', 'file.txt' or die "Could not open the file: $!";
my @lines = do {
local $/ = "\r";
<$fh>;
};
chomp @lines;
print "$_\n" for @lines;
使用严格;
使用“全部”警告;
打开我的$fh,“您的原始文件在每行末尾只有一个回车符(CR),而它应该有换行符(LF),或者如果它来自Windows系统,并且您正在Linux上读取它,则可能同时有换行符(CR)和换行符(LF)
没有任何新行来分割数据,@lines
只有一个元素,其中包含整个文件内容
如您所见,将该文本打印到终端会导致所有行显示在彼此的顶部
您需要修复文件的创建,但同时可以通过如下更改Perl的记录分隔符来正确读取文件
use strict;
use warnings 'all';
open my $fh, '<', 'file.txt' or die "Could not open the file: $!";
my @lines = do {
local $/ = "\r";
<$fh>;
};
chomp @lines;
print "$_\n" for @lines;
使用严格;
使用“全部”警告;
打开我的$fh,'完美答案。我学到了很多。正如您所说的,我是一个Perl代码初学者。你能给我推荐一些Perl实践资源吗?我目前正在使用威利-任何其他资源都将不胜感激。@Aditya:我很乐意提供帮助。有几个网站,比如和,在各个层面都有非常有用的练习。一旦你变得更加熟练,最好尝试在堆栈溢出上回答问题,如果你的代码特别好或不好,你会得到反馈。完美的答案。我学到了很多。正如您所说的,我是一个Perl代码初学者。你能给我推荐一些Perl实践资源吗?我目前正在使用威利-任何其他资源都将不胜感激。@Aditya:我很乐意提供帮助。有几个网站,比如和,在各个层面都有非常有用的练习。一旦您变得更加熟练,最好尝试在堆栈溢出上回答问题,如果您的代码特别好或不好,您将获得反馈。