Bueno, se puede usar el operador rango:
1 .. /^$/Con esto, sacamos las líneas que hay entre la primera línea (1) y la primera línea que está vacía (/^$/), incluyendo ambas.
Aquí hay un problema: dices que no quieres sacar la línea que está en blanco, así que hay que buscar una manera de saber cuándo estamos en esa última línea.
El operador rango devuelve un escalar que indica el número de línea, dentro del rango, que ha encontrado. Y, esto es lo importante, el último valor lleva una 'E' al final, para indicar que es la última línea del rango que hemos encontrado.
Entonces, queda un pelo más complicado, pero fácil de entender:
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
use autodie;
open my $fichero, q[<], 'kk.txt';
while (<$fichero>) { # leemos una línea
if (my $estado = 1 .. /^$/) { # si la línea está entre la 1 y la primera vacía
if($estado !~ /E/) { # si esa línea no es la última,
print; # la imprimimos
}
}
else {
last; # estamos fuera del rango que nos interesa: terminamos el bucle
}
}
close $fichero;
Coloreado en 0.003 segundos, usando
GeSHi 1.0.8.4