PERL чтение одной строки

Всем доброго времени суток, вопрос в следующем: У меня есть некий test.txt, в котором находится 5 строчек информации. Как в скрипте PERL я могу вывести только 3-ю строчку ? Собственно вот код:

use strict;
use warnings FATAL => 'all';
use utf8;
use open qw(:std :utf8);

my $file_name = 'a.txt';

my $content = '';

open FILE, '<', $file_name or die $!;

while (<FILE>) {
    $content .= $_;
}

print $content;

Ответы (2 шт):

Автор решения: Кирилл Новгородцев

прочитайте файл в массив и выведите его третий элемент:

my @lines = <FILE>;
print $line[2];

если большой файл или не хочется читать всё в память, то можно воспрользоваться переменной $., в которой хранится текущий номер строки для последнего хендлера. Смотри подробности perldoc perlvar:

my $file_name = shift @ARGV;
open my $FILE, "<", $file_name or die $!;

my $content;
$. = 0;
do { $content = <$FILE> } until $. == 3 || eof;

print $content;

или воспользоваться модулем Tie::File

#!/usr/bin/env perl
use strict;
use warnings FATAL => 'all';
use utf8;
use Fcntl 'O_RDONLY';
use Tie::File;

tie my @array, 'Tie::File', shift @ARGV, mode => O_RDONLY;
print $array[2];

Модуль не загружает файл в память, так что будет работать даже для очень больших файлов. В моих примерах имя файла берется из первого аргумента командной сроки.

→ Ссылка
Автор решения: KoVadim

Если файл большой-большой, то можно читать построчно до нужной строки

open FILE, '<', $file_name or die $!;

my $ind = 0;
while (<FILE>) {
    $ind = $ind+1;
    if ($ind == 3) {
      $content = $_;
      last; # выходим
    }
}

print $content;
→ Ссылка