# cat x.pl
#!/usr/bin/perl
my @lines;
my $start = 2;
my $end = 4;
my $i = 0;
for( $i=0; $i<$start; $i++ )
{
scalar(<STDIN>);
}
for( ; $i<=$end; $i++ )
{
push @lines, scalar(<STDIN>);
}
print @lines;
# cat xxx
1
2
3
4
5
# cat xxx | ./x.pl
3
4
5
#
В противном случае вы читаете много лишних строк в конце, которые вам не нужны.Так как это, print @lines может копировать память, поэтому итерация печати при чтении второго цикла for может быть лучшей идеей.Но если вам нужно «сохранить» переменную в perl, вы не сможете ее обойти.
Обновление:
Вы можете сделать это в один цикл спродолжить, если $. <$ start ", но вам нужно обязательно сбросить" $. "вручную на eof (), если вы выполняете итерацию или <>.