如何找到文件中字符n所在的行?
例如,我如何知道字符5347在给定文件中的位置?
答案 0 :(得分:4)
如果您使用行输入运算符逐行读取文件句柄,则特殊变量$.
会给出当前行。
以下是一些示例代码:它读取文件行,使用$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 $.;
答案 1 :(得分:3)
这个经过轻度测试的代码在我看来可以完成这项工作:
my $desired = 5347;
my $char_count = 0;
while ( <$fh> ) {
$count += length;
if ( $count >= $desired ) {
print $. . $/;
last;
}
}
当然它假定$fh
是一个尚未读取的已经打开的文件句柄。
另请注意,它会计算字符数,而不是字节数,这就是您所说的,但可能不是您的意思。