[Perl] como saltar a una linea especifica?

Salvador Ortiz Garcia sog@msg.com.mx
Wed, 12 Dec 2001 04:22:22 -0600 (CST)


On Tue, 11 Dec 2001, Gabriel Lopez Nunez wrote:

>=20
> Hola lista, miren tengo lo siguiente para leer un archivo de texto:
>=20
>             while(<FILE>){
>               chomp();
>               next unless /KBytes/;
>               seek(FILE,10,1);
>               last;
>             }
>=20
> Estoy buscando la palabra "kbytes" en cada linea, una vez encontrada
> quiero saltarme 10 o n lineas adelante, lo ideal seria que seek me enviar=
a
> derechito a la linea que quiero para no seguir sangrando el ciclo, pero
> no lo hace. Alguien sabe como hacerlo? (sin que suene a frase politica).
>=20
> Segun lei seek lo hacia, pero creo que entendi mal. El 1 me posiciona en
> la linea actual y el 10 es sumado para que me lleve 10 lineas adelante.

Si, entendiste un poco mal, seek avanza por _caracteres_ no por l=EDneas, y
en realidad no existe, salvo que tus lineas todas sean de la misma
longitud, forma de saber cuantos caracteres son diez l=EDneas sin leerlas
primero.

Por otro lado basta con que despues de encontrar tu patron, leas las n
l=EDneas m=E1s antes de salir, por ejemplo con

       while(<FILE>) {
=09   if(/kbytes/) {
               <FILE> for(0..9); # void context
               last;
           }
       }
=20
Saludos

Salvador Ortiz