Como hago esto en perl? (fwd)

Gunnar Wolf gwolf en campus.iztacala.unam.mx
Jue Jun 15 10:00:56 CDT 2000


> > > Necesito procesar algunos documentos de texto (iso-8859-1)
> > > con perl, pero ocasionalmente algunas palabras que comien-
> > > zan en un renglón terminan el siguiente (como en estas lí-
> > > neas). ¿Cómo le hago para quitar el guión y volver a te-
> > > ner la palabra completa?
> > 
> > A ver... Va al hilo, sin probar. Asumo que quieres procesar palabra por
> > palabra y que el archivo completo cabe en memoria. Modificarlo para que
> > vaya linea por linea debe ser trivial.
> 
> Mmm. No estoy seguro que quepa en memoria, pero voy a probar. 

Bueno, si no cabe, las modificaciones son triviales... Cualquier cosa.

> Hace
> unos años utilicé un programa que se llamaba "cambios
> consistentes" que permitía hace lo siguiente:
> 
> nl ' ' > nl back	# quita espacios al principio de la linea
> ' ' nl > nl back	# quita espacios al final de la linea
> nl nl > nl back		# quita líneas en blanco
> 
> '-' nl > ''		# quita el guión al final de la linea
> 			# y lo pega con la siguiente
> 
> En el peor de los casos, un programita en C puede hacer lo
> anterior :-)

Hombre, estas usando la herramienta equivocada! Quieres manejar patrones
en el texto, usa Perl! Para cada linea que quieras revisar, seria algo
asi:

$line =~ s/(\s+$|^\s+)//g;
next if $line eq '';

O sea: Si hay un caracter blanco (espacio, tabulador) o mas al final de la
linea o al principio de la misma, substituyelos por una cadena vacia.
Aplica este patron cuantas veces se pueda en la linea (para usar un solo
patron para revisar principio y fin). Si la linea esta vacia, dale otra
vuelta al ciclo y no continues procesandola. Pegale eso a lo que te mande
ayer...

-------------------------------------------------------------------
           Gunnar Wolf    gwolf en campus.iztacala.unam.mx
     Universidad Nacional Autónoma de México, Campus Iztacala
   Jefatura de Sección de Desarrollo y Admon. de Sistemas en Red
        Area de Seguridad en Computo - DCI - DGSCA - UNAM
-------------------------------------------------------------------
  Beginner thinks 1Kb == 1000 bytes.   Master knows 1Km == 1024m


-- 
Para desuscribirse, mande correo a: ayuda-unsubscribe en linux.org.mx
Para comandos adicionales, envíelo a: ayuda-help en linux.org.mx




Más información sobre la lista de distribución Ayuda