【发布时间】:2014-07-29 02:20:08
【问题描述】:
perl 有没有办法从特定的行号开始读取文件。每当我们在 perl 中读取文件时,我们都会执行while(<$fileHandler>),这使得 perl 解释器从头开始读取文件。如果我不想阅读这些行怎么办?
【问题讨论】:
perl 有没有办法从特定的行号开始读取文件。每当我们在 perl 中读取文件时,我们都会执行while(<$fileHandler>),这使得 perl 解释器从头开始读取文件。如果我不想阅读这些行怎么办?
【问题讨论】:
您可以从头开始跳过行,并以$start_line开始处理,
my $start_line = 10;
while(<$fileHandler>) {
next unless $. == $start_line .. undef;
# ..
}
range operator .. 还提供以下简写:
如果标量“..”的任一操作数是常量表达式,则如果该操作数等于 (
==) 与当前输入行号($.变量),则认为该操作数为真。
因此以上可以简化为:
while(<$fileHandler>) {
next unless 10 .. undef;
# ..
}
【讨论】:
unless 感到非常酷的少数几次之一。这太罕见了,我忘记了例子。感谢分享;)
if not 仍然可以完成这项工作。
因为你不知道一行会有多长,所以你必须从文件的开头读取。
如果你知道你的线有多宽,因为你有一个固定的线宽,或者其他一些方案,那么你可以在你的文件中寻找那个位置。否则,您必须阅读每个字符并搜索“特殊”换行符。
文本文件只是一长串字符。线条没有什么特别之处。
【讨论】: