Cortar lineas sin cortar palabras

Roberto Jimeno jimeno@pc6.politicas.unam.mx
Thu, 4 Dec 1997 14:30:29 -0600


>    Alguno de Uds. se ha encontrado en la necesidad de cortar un texto en
>    lineas de no mas de X caracteres y sin cortar palabras?
> ...
>    Ejemplo:
> 
>    $textodeentrada= "Esta es una oracion de prueba con varias palabras";
>    $lmaxima=10;
> 
>    @compaginada = &compaginar($textodeentrada, $lmaxima);
> 
>    si imprimiese compaginada, deberia darme algo como esto:
> 
>    1234567890
> 
>    Esta es una
>    oracion de
>    prueba  con 
>    varias
>    palabras



	$long_max = 50 #Tam. Max. del reenglón.
	$textote = "Un chorototote bien muy requete ... 
...
...
... grandotote, pero al fin y al cabo finito";

	# creo que la Sgte. linea deberia separar $textote en palabras.
	@palabra = split /\s+/, $textote;

	foreach @palabra {
		$texto_corto = $texto;
		$texto_largo = "$texto $palabra[0]";
		if ($#texto_largo >= $long_max) {
			print "$texto_corto\n";
			$texto = "";
			#El Sgte. comando debe mandar el control justo
			#debajo del foreach sin hacer shift.
			redo;
		};
		next;
	};
	print "$texto_largo\n";


	Ando un poco confundido con la sintaxis, pero creo que en el
peor de los casos el algoritmo que acabo de describirte debe
funcionar, y estoy seguro de que debe haber varios mucho mejores.
	
							Suerte.
-- 
-------------------------------------------------------------------------------
Roberto Jimeno.       From The Cher-Speak Dictionary for the totally clueless:
wig (WIG), v. wiggin' or wigged 1.become irrational, freak out. 2. go postal.