Fonction time() en Perl

Dans le langage de programmation Perl, il ya une fonction intégrée time(). Cette fonction renvoie un nombre entier — le nombre de secondes le début de l'époque. Presque tous les systèmes actuels le début d'une ère est un zéro, zéro minute, zéro heures, le premier janvier 1970 dans le fuseau horaire UTC (1970-01-01T00:00:00Z). Ce nombre est encore souvent appelé timestamp.

Voici un exemple d'utilisation de cette fonction:

▶ Run
#!/usr/bin/perl

print time();

Au moment de la rédaction de cet article, le programme a lancé le nombre de 1577113985, ce qui correspond à la date 2019-12-23T15:13:05Z.

Les arguments

La fonction time() n'accepte pas les arguments. Si vous essayez de lui transmettre l'argument, ce serait une erreur:

▶ Run
#!/usr/bin/perl

print time(8);

Voici la conclusion:

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

Précision

La fonction time() (elle CORE::time()) renvoie le nombre d'entiers secondes depuis le début de l'époque. Si la précision à la seconde, n'est pas suffisant, vous pouvez utiliser la fonction de Time::HiRes::time(), qui renvoie un float nombre de secondes depuis le début de l'époque.

Programme d'exemple qui montre l'utilisation de ces deux fonctions:

▶ Run
#!/usr/bin/perl

use feature qw(say);

use Time::HiRes;

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

Exemple de sortie:

1577116390
1577116390.36876

La documentation officielle

Voici la sortie de la commande 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.

Autres articles