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];
Модуль не загружает файл в память, так что будет работать даже для очень больших файлов. В моих примерах имя файла берется из первого аргумента командной сроки.
Если файл большой-большой, то можно читать построчно до нужной строки
open FILE, '<', $file_name or die $!;
my $ind = 0;
while (<FILE>) {
$ind = $ind+1;
if ($ind == 3) {
$content = $_;
last; # выходим
}
}
print $content;