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

[0] Índice de Mensajes

Ir a la versión completa