从字符位置获取行号

ℝap*_*ink 3 perl

如何定位文件中第n个字符所在的行?

例如,我如何知道字符 5347 位于给定文件中的位置?

Mar*_*lis 5

如果您使用行输入运算符逐行读取文件句柄,则特殊变量$.会给出当前行。

这是一些示例代码:它读取文件行,计算带有$pos.

#!/usr/bin/env perl

use v5.12;
use strict;

open my $fh, '<', 'file.txt';

my $reference = 5347;
my $pos       = 0;

do {
    $pos += length <$fh>;
 } while ( $pos < $reference );

say $.;
Run Code Online (Sandbox Code Playgroud)