Programación Web y Scripting > Perl
Quitar un CR
(1/1)
Erturu:
Buenos días. Tengo un problema a la hora de leer un fichero y quitar un CR como salto de linea, si utilizo un chomp o un chop() me pone todo en una linea menos la que quiero, ya que el resto de las lineas tiene un LF como salto de linea y no se como decirle que quiero que sea el CR, probe a que lo lea en hex y que quite el 0x0D, pero nada.
Alguna idea?
my $FichR = $pathDestino."\\".$dsn;
open(FICHERO, '<:encoding(UTF-8)', $FichR) or die "No se pudo abrir el $pathDestino./.$dsn";
open(SALIDA, ">$pathDestino/.$dsn");
while ($linea1 = <FICHERO>){
chop $linea if substr($linea, -1) eq chr(0x0D);
print SALIDA $linea1;
}
close (FICHERO);
close (SALIDA);
explorer:
Una posibilidad sería usar una expresión regular:
--- Código: ---$linea =~ s/\x0D$//; # quitar el CR final, si está
--- Fin del código ---
El \x0D representa el código de carácter 13, en formato hexadecimal.
El ancla "$" indica que queremos buscar hacia el final de la cadena. O sea: el CR debe estar al final de la cadena, y sólo en esa posición.
Si el patrón de búsqueda coincide, el operador de sustitución s/// realiza el cambio del CR por... nada. O sea, lo quita.
Navegación
Ir a la versión completa