• Publicidad

Epoch

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

Epoch

Notapor primitivo » 2013-10-26 23:03 @002

Hola, un saludo.

Quiero convertir un dato epoch 1381717807, y quiero convertirlo a tiempo normal. Intenté pasarlo como parámetro a
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. localtime()
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4
pero no me dio resultado.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #Línea que extraigo el epoch
  2. #->1264 1381717807 :seconds idle, signon time
  3.  
  4. #Intenté...
  5. my $data = localtime($1);
  6. print $data;
  7. #Pero no funcionó
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Me está dando este error
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
  1. -> 1381717807 -> Time::tm=ARRAY(0x9625dc4)
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
primitivo
Perlero nuevo
Perlero nuevo
 
Mensajes: 80
Registrado: 2013-03-22 23:05 @004

Publicidad

Re: Epoch

Notapor explorer » 2013-10-27 06:57 @331

localtime () es una de esas funciones de Perl que funciona de forma distinta si la ejecutamos en modo lista o en modo escalar:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my($momento) = "->1264 1381717807 :seconds idle, signon time" =~ /\d+ (\d+)/;          # extraemos
  2.  
  3. # modo lista
  4. my @fecha = localtime $momento;
  5. say "@fecha";                          # 7 30 4 14 9 113 1 286 1
  6.  
  7. # modo escalar
  8. my $fecha = localtime $momento;
  9. say $fecha;                            # Mon Oct 14 04:30:07 2013
  10.  
  11. # modo escalar, localizado para español de España
  12. use POSIX qw(strftime locale_h);
  13. setlocale(LC_ALL, "es_ES");
  14.  
  15. $fecha = strftime "%a %b %e %H:%M:%S %Y", localtime $momento;
  16. say $fecha;                            # lun oct 14 04:30:07 2013
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Lo que me extraña es lo que te está pasando a ti: lo estás ejecutando en modo escalar (hay una variable escalar en la parte izquierda de la asignación), pero el resultado te lo toma como una referencia a un array.

Seguramente ese localtime() será una reescritura del verdadero localtime(). Así lo hace, por ejemplo, el módulo Time::Piece.
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: Epoch

Notapor primitivo » 2013-10-27 11:44 @530

Vale, el problema estaba en que el valor sí venía como array.

Con int() lo he solucionado.
primitivo
Perlero nuevo
Perlero nuevo
 
Mensajes: 80
Registrado: 2013-03-22 23:05 @004

Re: Epoch

Notapor explorer » 2013-10-27 20:40 @903

Sería mejor haber usado scalar().
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


Volver a Básico

¿Quién está conectado?

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