La función de time() en Perl

En el lenguaje de programación Perl tiene integrada la función de time(). Esta función devuelve un número entero — el número de segundos desde el comienzo de la época. Prácticamente en todos los sistemas modernos de el comienzo de la época es cero, cero minutos, cero horas del primero de enero de 1970 en la zona horaria UTC (1970-01-01T00:00:00Z). Este número sigue siendo a menudo llamado timestamp.

He aquí un ejemplo de esta función:

▶ Run
#!/usr/bin/perl

print time();

En el momento de escribir este artículo, el programa ha ampliado el número de 1577113985, que corresponde a la fecha de 2019-12-23T15:13:05Z.

Los argumentos

La función de time() no acepta argumentos. Si se intenta pasar de un argumento, lo que se producirá un error:

▶ Run
#!/usr/bin/perl

print time(8);

He aquí la conclusión:

syntax error at script.pl line 3, near "(8"
Execution of script.pl aborted due to compilation errors.

La precisión de la

La función de time() (que es también la CORE::time()) devuelve el número de segundos completos desde el comienzo de la época. Si la precisión de hasta un segundo, no es suficiente, se puede utilizar la función de Time::HiRes::time(), que devuelve un float número de número de segundos desde el comienzo de la época.

Un programa de ejemplo que muestra el uso de estas dos opciones:

▶ Run
#!/usr/bin/perl

use feature qw(say);

use Time::HiRes;

say time();
say Time::HiRes::time();

Ejemplo de salida:

1577116390
1577116390.36876

La documentación oficial

He aquí el resultado del comando perldoc -f time:

       time    Returns the number of non-leap seconds since whatever time the
               system considers to be the epoch, suitable for feeding to
               "gmtime" and "localtime".  On most systems the epoch is
               00:00:00 UTC, January 1, 1970; a prominent exception being Mac
               OS Classic which uses 00:00:00, January 1, 1904 in the current
               local time zone for its epoch.

               For measuring time in better granularity than one second, use
               the Time::HiRes module from Perl 5.8 onwards (or from CPAN
               before then), or, if you have gettimeofday(2), you may be able
               to use the "syscall" interface of Perl.  See perlfaq8 for
               details.

               For date and time processing look at the many related modules
               on CPAN.  For a comprehensive date and time representation look
               at the DateTime module.

Otros articulos