Чтение строки из файла без продвижения счетчика строк с помощью Perl - PullRequest
4 голосов
/ 15 ноября 2010

Я хочу иметь возможность читать «следующую строку» без увеличения счетчика строк, чтобы в следующий раз при выполнении команды чтения она читала ту же строку.

пример:

это первая строка
это вторая строка
это третья строка

Я хочубыть в состоянии знать, что вторая строка говорит: «это вторая строка», но не продвигает мой счетчик так, чтобы моя программа:

print <>;
print unknown_read_command;
print <>;

напечатала на экране:

этопервая строка
это вторая строка
это вторая строка

И в более общем смысле, как я могу изменить и переместить указатель на строку в любом направлении и на любую сумму, которую я хочу

Ответы [ 2 ]

7 голосов
/ 15 ноября 2010

Вы можете выбрать позицию файла для файлового дескриптора с помощью Tell и установить его с помощью seek :

my $pos = tell $fh;
# ...
seek $fh, $pos, 0 or die "Couldn't seek to $pos: $!\n";
3 голосов
/ 15 ноября 2010

Если вы читаете построчно, еще один способ сделать это с помощью Tie::File:

#!/usr/bin/perl 

use strict;
use warnings;
use Tie::File;

my $fn = "foo.bar";

tie my @myFileLines, 'Tie::File', $fn or die "$?";

print STDOUT $myFileLines[0];
print STDOUT $myFileLines[1];
print STDOUT $myFileLines[1]; # print second line twice

untie @myFileLines;

Использование методов поиска файлов является более общимсамостоятельно искать разделители новой строки, которые Windows усложняет запатентованной новой строкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...