• Publicidad

Ayuda con Add_Delta_DHMS

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

Ayuda con Add_Delta_DHMS

Notapor princi » 2012-11-29 09:05 @420

Hola, solicito vuestra ayuda nuevamente, tengo el siguiente código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $local=3;
  2. print LOG "*seg ***$seg \n";
  3.  
  4. our ($yr_txt,$mes_txt,$dia_txt,$hora_txt,$min_txt, $seg_txt) = Add_Delta_DHMS($yr,$me,$dia,$hora,$min,$seg, 0,-$local, 0  ,0);
  5. $yr_txt = sprintf "%2d",$yr_txt;
  6. $mes_txt= sprintf "%2d",$mes_txt;
  7. $dia_txt= sprintf "%2d",$dia_txt;
  8. $hora_txt= sprintf "%02d",$hora_txt;
  9. $min_txt= sprintf "%02d",$min_txt;
  10. print LOG "**seg *1 *$seg \n";
  11. print LOG "**txt **$seg_txt \n";
  12. $seg_txt= sprintf "%5.2f",$seg_txt;
  13. print LOG "****$seg_txt \n";
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Mi problema es que la variable $seg_txt, me toma solo la parte entera de la información y yo necesito los segundos tal y como vienen en la variable $seg.

Ejemplo de como lo muestra en el LOG:
*seg ***35.30
**seg *1 *35.30
**txt **35
****35.00

Necesito los segundos como 35.30 y no como 35.00. En Windows me funciona bien pero no sé por qué queda 35.00 en Linux.

Disculpen la molestia pero alguien me podría ayudar o decirme si tengo que usar otra función para Linux, o si debería usar otras soluciones. Vi varios ejemplos en el foro pero ninguno parecido a mi problema.

Muchas gracias por su tiempo...
princi
Perlero nuevo
Perlero nuevo
 
Mensajes: 16
Registrado: 2012-01-31 08:00 @375

Publicidad

Re: Ayuda con Add_Delta_DHMS

Notapor explorer » 2012-11-29 12:14 @551

El módulo Date::Calc usa las bibliotecas del sistema, así que dependes de la implementación de la biblioteca C que tengas en ese momento.

En mi Linux 3.4.11-2.16-desktop #1 SMP PREEMPT Wed Sep 26 17:05:00 UTC 2012 (259fc87) x86_64 x86_64 x86_64 GNU/Linux y Perl v5.16.0, sí que me funciona:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use v5.14;
  3. use Date::Calc "Add_Delta_DHMS";
  4.  
  5. my ($year,$month,$day, $hour,$min,$sec) = Add_Delta_DHMS(2012,11,29, 17,55,35.30, 0,-3,0,0);
  6.  
  7. say "$year,$month,$day, $hour,$min,$sec";  # 2012,11,29, 14,55,35.3000000000029
  8.  
  9. my $yr_txt   = sprintf "%2d",   $year;
  10. my $mes_txt  = sprintf "%2d",   $month;
  11. my $dia_txt  = sprintf "%2d",   $day;
  12. my $hora_txt = sprintf "%02d",  $hour;
  13. my $min_txt  = sprintf "%02d",  $min;
  14. my $seg_txt  = sprintf "%5.2f", $sec;
  15.  
  16. say "$yr_txt/$mes_txt/$dia_txt $hora_txt:$min_txt:$seg_txt";  # 2012/11/29 14:55:35.30
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

En cambio, con Linux 2.6.32-5-amd64 #1 SMP Mon Oct 3 03:59:20 UTC 2011 x86_64 GNU/Linux y Perl v5.10.1, no funciona:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. explorer@host:~/Desarrollo$ perl ./kk.pl
  2. 2012,11,29, 14,55,35
  3. 2012/11/29 14:55:35.00
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Si necesitas precisión... vas a tener que buscarte otro módulo, o asegurarte que tienes un Linux moderno que soporte esa función.
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: Ayuda con Add_Delta_DHMS

Notapor princi » 2012-12-03 07:51 @368

Muchas gracias, explorer.
princi
Perlero nuevo
Perlero nuevo
 
Mensajes: 16
Registrado: 2012-01-31 08:00 @375


Volver a Básico

¿Quién está conectado?

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