Cuando localtime es llamada en un contexto de lista devuelve una lista como sigue:
# 0 1 2 3 4 5 6 7 8 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
Vea el siguiente ejemplo de uso:
DB<1> @f = `ls` DB<2> chomp(@f) # eliminamos retornos de carro finales DB<3> x @f[0..5] # veamos los nombres de los 6 primeros ficheros 0 'a2pdf' 1 'Abstract.pm' 2 'adressbook.pl' 3 'advanced_perl_programming' 4 'amatch.pl' 5 'A.pl' DB<4> @s = stat $f[0] DB<5> x @s 0 2051 1 2171079 2 33261 3 1 4 1007 5 1007 6 0 7 339 8 1111133369 9 1092043518 10 1096562651 11 4096 12 8 DB<6> use constant mtime => 9 # definimos la constante mtime como 9 DB<7> p $s[mtime] # formato Midnight Universal Time 1092043518 DB<8> @t = localtime $s[mtime] # contexto de lista DB<9> x @t 0 18 # segundos 1 25 # minutos 2 10 # horas 3 9 # día del mes 4 7 # mes: Agosto. Enero es el 0. 5 104 # año desde 1900: 1900+104 = 2004 6 1 # dia de la semana: Lunes. Domingo es el 0. 7 221 # dia del año 8 1 # daylight savings time (cambio de horario) es cierto DB<10> $t = localtime $s[mtime] # contexto escalar DB<11> x $t 0 'Mon Aug 9 10:25:18 2004'
localtime
devuelve
el correspondiente al MUT devuelto por la función time
:
lhp@nereida:~$ perl -wde 0 main::(-e:1): 0 DB<1> p localtime 45307331084931 DB<2> p scalar(localtime) Thu Apr 3 07:30:54 2008
La función gmtime es similar a localtime
sólo que devuelve el tiempo Greenwich:
DB<3> $g = gmtime DB<4> p $g Thu Mar 31 17:47:13 2005 DB<5> $c = time DB<6> p $c 1112291278 DB<7> p localtime $c 5847183121054891 DB<8> p "".localtime $c Thu Mar 31 18:47:58 2005 DB<9> p scalar(localtime $c) Thu Mar 31 18:47:58 2005 DB<10> p scalar localtime(time-(24*60*60)), "\n"; Wed Mar 30 19:14:33 2005
Si se quiere tener mayor precisión en la medida del tiempo, use
el módulo Time::HiRes
. Sigue un ejemplo de uso:
DB<1> use Time::HiRes DB<2> p time 1112339548 DB<3> p Time::HiRes::time 1112339556.72756Puede verse como se usa un número flotante incluyendo no sólo los segundos sino los microsegundos MUT. Si queremos sustituir la función
time
por la que provee Time::HiRes deberemos importarla nombrándola
explícitamente en el pragma use
:
DB<4> use Time::HiRes "time" DB<5> p time 1112339573.30229