gpt4 book ai didi

perl - 阅读最后两行,而不是 Perl 中的前两行

转载 作者:行者123 更新时间:2023-12-04 21:52:11 25 4
gpt4 key购买 nike

我正在尝试创建一个输出文件最后两行的 Perl 脚本。我当前的脚本完成了我想要的,除了它读取前两行而不是最后两行。

use strict;
use warnings;

my $file = 'test.txt';
open my $info, $file or die "Could not open $file: $!";

while( my $line = <$info>) {
print $line;
last if $. == 2;
}

close $info;

我必须更改什么以便脚本读取最后两行而不是前两行?

最佳答案

这比打印第一行更难!这里有一些选项,从最不聪明到最聪明:

只需使用 tail
因为谁真正需要 perl 脚本来打印文件的最后两行?

将文件中的所有行读入一个列表,并打印最后两行。

print do {
open my $info, $file or die ...;
(<$info>)[-2, -1];
};

读取文件中的所有行,只记住最后两行。
open my $info, $file or die ...;
my @lines;
while (my $line = <$info>) {
shift @lines if @lines == 2;
push @lines, $line;
}
print @lines;

向后阅读文件,寻找行尾;当找到两个时,从该点向前阅读。

这是最节省内存的,特别是如果“行”长得令人担忧,但很复杂。但是,它有一个模块: File::ReadBackwards .它让您可以:
use File::ReadBackwards;
my $info = File::ReadBackwards->new($file) or die ...;
my $last = $info->readline;
my $second_last = $info->readline;
print $second_last, $last;

关于perl - 阅读最后两行,而不是 Perl 中的前两行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25578750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com