如何用perl返回一行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用perl返回一行相关的知识,希望对你有一定的参考价值。

任何人都可以告诉我,当你遍历文本文件时,在Perl中返回一行是怎么回事。例如,如果我看到文本在线并且我认出它并且如果它被识别为特定模式我想回到前一行做一些事情并继续进行。

提前致谢。

答案

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

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

使用continue块可以保证即使您通过next绕过部分循环体也可以复制。

如果你想真正倒带,你可以用seektell来做,但它更麻烦:

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;
}
另一答案
my $prevline = '';
for my $line (<INFILE>) {

    # do something with the $line and have $prevline at your disposal

    $prevline = $line;
}

以上是关于如何用perl返回一行的主要内容,如果未能解决你的问题,请参考以下文章

java web二进制流的图片如何用response返回给前台

如何用perl获得某个ftp目录下所有的文件和文件夹的路径

如何用Perl截取报文

如何用 ViewPager 中的另一个片段替换 Android 片段?

Perl 语言输入输出怎么写?控制结构如何用?看这一篇就够了!

如何用一行代码初始化字符串类型的数组?