A função time() em Perl

Na linguagem de programação Perl possui a função de time(). Esta função retorna um número inteiro é o número de segundos de o início da época. Em quase todos os sistemas modernos de o início da era é zero segundos, zero minutos, zero horas de primeiro de janeiro de 1970 no fuso horário UTC (1970-01-01T00:00:00Z). Este número ainda é muitas vezes chamado de timestamp.

Aqui está um exemplo de trabalho com esse recurso:

▶ Run
#!/usr/bin/perl

print time();

No momento da redação deste artigo, que o programa mostre o número de 1577113985, que corresponde à data de 2019-12-23T15:13:05Z.

Argumentos

A função time() não aceita argumentos. Se tentar passar-lhe o argumento, então o erro será:

▶ Run
#!/usr/bin/perl

print time(8);

Eis a saída:

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

Precisão

A função time() (ela mesma CORE::time()) retorna o número total de segundos desde o início da época. Se a precisão para os segundos não são suficientes, então você pode usar a função Time::HiRes::time(), que retorna um float número de número de segundos desde o início da época.

Um programa de exemplo que demonstra o uso desses dois recursos:

▶ Run
#!/usr/bin/perl

use feature qw(say);

use Time::HiRes;

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

Um exemplo de saída:

1577116390
1577116390.36876

A documentação oficial

Aqui está a saída do 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.

Outros artigos