gpt4 book ai didi

regex - 如何使用 perl 返回一行

转载 作者:行者123 更新时间:2023-12-04 15:26:48 25 4
gpt4 key购买 nike

谁能告诉我当您遍历文本文件时,如何在 perl 中返回一行。例如,如果我看到一行中的文本并且我认出了它,并且如果它被识别为特定模式,我想回到上一行做一些事情并继续进行。

提前致谢。

最佳答案

通常你不会回去,你只是跟踪上一行:

my $previous; # contents of previous line
while (my $line = <$fh>) {
if ($line =~ /pattern/) {
# do something with $previous
}
...
} continue {
$previous = $line;
}

使用 continue即使您通过 next 绕过循环体的一部分,块也能保证进行复制。 .

如果你想真正倒带,你可以用 seek 来做和 tell但它更麻烦:
my $previous = undef;    # beginning of previous line
my $current = tell $fh; # beginning of current line
while (my $line = <$fh>) {
if ($line =~ /pattern/ && defined $previous) {
my $pos = tell $fh; # save current position
seek $fh, $previous, 0; # seek to beginning of previous line (0 = SEEK_SET)
print scalar <$fh>; # do something with previous line
seek $fh, $pos, 0; # restore position
}
...
} continue {
$previous = $current;
$current = tell $fh;
}

关于regex - 如何使用 perl 返回一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4666936/

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