打印出Perl中剩余的所有行

时间:2013-06-13 15:39:49

标签: perl loops

我不是Perl的新手,但我很少用它来学习一个人需要记住的东西。现在我正在编写一个简单的脚本,它迭代文件的每一行并根据需要进行一些更改。有趣的部分看起来像这样:

while (<>)
{
    $modified_line = ... # modify current line as required
    print $modified_line; # print out the modified line
}

这一切都运行正常,但我只需要在文件的开头应用一些更改,并且我不喜欢仅为此迭代每一行的想法。 我宁愿在特定条件下打破循环并打印输出文件的其余部分不变。这可能吗?

while (<>)
{
    $modified_line = ... # modify current line as required
    print $modified_line; # print out the modified line
    last if /^\[.*]$/; # break out if line is enclosed in []
}
# how to print out the rest of the file unchanged here?

2 个答案:

答案 0 :(得分:4)

您只需添加

即可
print while <>;

它仍会读取文件的所有其余内容 - 它必须能够将其余数据复制到输出中 - 但这确实不是问题。

答案 1 :(得分:2)

你的例子将继续无论如何。如果条件为真,则要退出,如下所示:

while (<>)
{
    $modified_line = ... # modify current line as required
    print $modified_line; # print out the modified line
    last if /^\[.*]$/; # break out if line is enclosed in []
}