Como quitar los "\n" al final de las lineas

Bolo Lacertus lacertus@arenque.dgsca.unam.mx
Mon, 20 Jul 1998 11:56:16 -0500


Saludos!!!

Bueno, todos hemos pasado por eso :)

Gaston Defago wrote:
> Cuando hago un split de campos de un arhivo, el ultmo campo tiene el
> <cr>, para eliminar esto le hago nuevamente un split al ultimo campo con
> separador "\n", para eliminarlo. No hay alguna forma implicita de

La cosa, si la entendí bien es como sigue; supongamos a ";" como
separador:

Un registro se verá mas o menos:

uno;dos;tres;cuatro<cr>
(donde <cr> es en realidad un \n, return o como le queramos llamar)
si lo tienes en una variable

$reng="uno;dos;tres;cuatro\n"; #no creo que lo hagas así, pero resulta
en algo similar.

De modo que haces:
@arr=split /\;/,$reng;
y tienes

@arr=("uno","dos","tres","cuatro\n");

Y no quieres el "\n" en "cuatro"

La respuesta es de lo mas sencilla, para eso exite chop.
Esta funcion quita el último caracter de la cadena que le das como
argumanto, se usa casi siempre para quitar los \n del final de los
renglones leidos de archivo.

Así, tu código cambia en:
$reng="uno;dos;tres;cuatro\n"; #o lo que sea
chop $reng;
@arr=split /\;/,$reng;

Y ya!

Espero que te sirva: Daniel Sol

P.D. Contesto a la lista para evitar una cascada de correo a Gaston y
para preguntar por soluciones mas elegantes.
-- 
Bolo Lacertus: lacertus@servidor.dgsca.unam.mx			==~\___\
http://132.248.71.81/cgi-bin/lacertus/hola			 =__vvvv
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS/GE/GED d>d? s:+ a-- C++>+++$ US++ P+++>++++$ L E? W++>+++ N+ o? K- 
w--- O !M V- PS+ PE->-- Y+ PGP+ t+ 5? X- R@ tv-- b++>- DI+ D+ G+>++
e+>++ 
h* r-(*) z+ 
------END GEEK CODE BLOCK------