• Publicidad

Problema con salto de línea

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Problema con salto de línea

Notapor bvayap » 2013-07-17 08:14 @385

Hola,

Tengo un problema que no veo en el foro cómo resolver. Seguro que es una tontería, pero no lo veo :-(

Estoy intentando sacar el año, mes y día mediante:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. ### Variables
  4. my %mon2num = qw(
  5.   Jan 01 Feb 02  Mar 03  Apr 04  May 05 Jun 06
  6.   Jul 07 Aug 08  Sep 09  Oct 10 Nov 11 Dec 12
  7. );
  8. my $year;
  9. my $month;
  10. my $day;
  11. system ("date > fecha.txt");
  12. open my $CSV, '<', 'fecha.txt';
  13. while (my $linea = <$CSV>) {
  14.     my(@campos) = split " ", $linea, 6;
  15.     $year = $campos[5];
  16.     $month = $mon2num{$campos[1]};
  17.     print "Estamos en el anyo $year y en el mes $month, he dicho.\n";
  18. }
  19. close $CSV;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


pero resulta que en el año, me guarda un salto de línea, con lo que el print me sale partido en dos líneas...

¿Alguna sugerencia? Gracias de antemano a todos.
bvayap
Perlero nuevo
Perlero nuevo
 
Mensajes: 31
Registrado: 2013-05-31 02:42 @154

Publicidad

Re: Problema con salto de línea

Notapor explorer » 2013-07-17 09:30 @437

A la hora de hacer el split(), en la última columna, además del año, estará el o los caracteres de nueva línea.

Recordar que en el while() se lee una línea entera, incluidos esos caracteres. Si la cifra del año es la última columna, pues la cifra junto con esos caracteres irán a parar a $campos[5].

Hay dos soluciones, a elegir:
  • quitar los caracteres de nueva línea en cuanto hemos terminado de leer la línea. Insertar esta línea:
    Sintáxis: [ Descargar ] [ Ocultar ]
    Using perl Syntax Highlighting
    1.     chomp $linea;
    Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
  • hacer que la cifra del año sea realmente un número. Modificar la línea 15 por esta otra:
    Sintáxis: [ Descargar ] [ Ocultar ]
    Using perl Syntax Highlighting
    1.     $year = 0+ $campos[5];
    Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
    De esta manera, los caracteres de nueva línea desaparecen, y solo queda la cifra.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problema con salto de línea

Notapor bvayap » 2013-07-18 01:47 @116

Muchas gracias, explorer.

La primera solución es perfecta.
bvayap
Perlero nuevo
Perlero nuevo
 
Mensajes: 31
Registrado: 2013-05-31 02:42 @154


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 21 invitados

cron