如何在perl单行代码中返回文件的开头?

时间:2018-10-09 21:44:45

标签: perl filehandle

浏览完一个文件之后,我想回到文件的开头,并根据我对文件的原始传递来删除条目,但是我不知道如何回到文件的开头。我将输入文件的名称命名为单行,但没有文件句柄。我需要文件句柄吗?如何从文件名中获取它?

谢谢。

1 个答案:

答案 0 :(得分:1)

文件句柄为ARGV。尽管-i可能会提出有关搜索的问题,但在我的测试中仍然有效

perl -i.bak -pe'
    $_ = "line: $_"; 
    if ($. == 2) { seek ARGV, 0, 0 }
' test.txt

如果您发现-i有问题,或者备份(我没有)在没有问题的情况下运行,请手动进行。

使用-p switch时,每次打印$_。注释中显示的代码使用了它,但问题似乎暗示并非每行都需要打印,因为它想从一开始就“ 删除条目”。如果是这种情况,请使用-n而不是-p,它还会打开文件并遍历其行,但不会打印。然后根据需要添加打印语句。

阅读I/O Operators in perlop通常是一个非常好的主意,一旦您对此感到困惑,我会真的推荐它。

看来您的问题可能有更好的解决方法,但我们需要更多详细信息。