module Perl perso - FrDate.pm

Module Perl de francisation de la date et l'heure

alain Adelmar
aadelmar@numericable.fr beuuh c est quoi ca

Bien que ce ne soit pas le dernier module de formattage de date et heure pour les fichiers et maintenant (now), ce script affiche la date et l'heure pour plusieurs vieux scripts que je n'ai pas encore modifié en le remplacant par DateFrench.html donc je le laisse sur le site en attendant que j'éfféctue tous les changements. (il n'a qu'une dizaines de formats préséléctionné, contre plus de 24 sur DateFrench.pm).


  1. Ce qu'il fait
  2. Comment ça marche
  3. Comment je peut le modifier
  4. En général les modules Perl


FrDate.pm est un module Perl de francisation de date et heure à utiliser dans les programmes Perl.
Je l'ai écris pour avoir le format adéquat de la date du dernier accès à ce fichier, la date et l'heure de la dernière modification ou celle de l'instant présent. Ce module donne la date et l'heure sous une douzaine de formats différents, tel que:

# comme ceci par défaut
- Lundi 06 Avril 2004 14:44:37     
# ou des variantes avec, sans maj, abrégé ou pas, heure sans minutes ni sec, etc...
- lun 6 Avr 2004 14h 
# en ascii (indiquant l'an, m, jr, h, mi, sec sur 1 caractère) respecte les contraintes du tri
# peu être incorporer dans filename: $filename = "$rootname_$frd\.$ext";
- htlyvw 
# ou des variantes pour que ce soit humainement lisible mais court dans l'heure
- 06042004-hdy
# ou codé hexa, ascii pour ne pas être déchiffré
- xÊ8TÔ

Enfin il y a une douzaine de possibilités, mais on peut en ajouter autant que l'on veut, en créant une ligne de plus, en fin de script, dans la fonction convert_time. voir comment ça marche.
 

Comment ça marche:

Et bien c'est un module Perl, alors la première des chose pour s'en servir, c'est de le mettre dans le répértoire ou il sera pris en compte, c'est à dire:
Si vous étes sur Windows il faudra le copier dans le sous répertoire \lib de Perl, pour avoir.\Perl\lib\FrDate.pm
Si vous êtes sur Linux ce sera pareil mais dans /usr/lib/perlx.x/lib pour avoir /usr/lib/perlx.x/lib/FrDate.pm

Comment m'en servir:

Il faut le déclarer par la ligne :
use FrDate;
en debut de script de façon à pouvoir s'en servir dessuite. On a toujours besoin de dater et de l'heure, ne serai-ce que pour les logs, et c'est plus sympa en français, non?
Ensuite, il faudra lui assigner les paramètres, il y a un seul paramètre pour l'heure actuelle et trois pour dater un fichier.
Pour avoir l'heure actuelle (now) il faudra assigner le paramètre $mod_affichage (qui est le mode d'affichage).
Il peut valoir pour l'instant de 0 à 12 (voir l'aide sur FrDate pour plus de précision). En gros:

  $mod_affichage = 0; #donnera la date et l'heure par defaut => exemple: Lundi 06 Avril 2004 17:45:25
  $mod_affichage = 3; #donnera        "          "           => 20040406174525
  $mod_affichage = 6; #donnera        "          "           => GTHmtk 
  
comme au dessus mais en ascii (triable) c'est à dire que si vous incorporez la date et l'heure dans le nom de fichier, premièrement ca ne prendra pas de place (6caractères) et si dans un même répertoire vous avez un autre fichier de même nom créé et sauvé 1 seconde aprés. Il n'écrasera pas le fichier avant lui car la date aura changé. exemple:
différence entre ./fichier-GTHmtk.log et ./fichier-GTHmtl.log = une seconde, et si vous trié même alphabétiquement  fichier-GTHmtk.log sera avant fichier-GTHmtl.log          astucieux n'est il pas
Bon je reprend.., essayez pour voir l'éventail de format de date en faisant un petit script style:

#!/usr/bin/perl -w
use FrDate;
for $i(0..12) {
    $mod_affichage = $i;
    $fd = maintenant($mod_affichage);
    print "maintenant c\'est $fd\n";
}

qui donne à l'instant :
maintenant c'est mardi 06/04/2004 20:25:48
maintenant c'est Mardi 06 Avril 2004
maintenant c'est mardi 06 Avril 2004
maintenant c'est 1040406202548
maintenant c'est 20040406UZr
maintenant c'est e-0406-UZr
maintenant c'est edGUZr
maintenant c'est mardi  06 Avril 2004 20:25:49
maintenant c'est Mar 06 Avr 20h25:49
maintenant c'est Mar 06 Avr
maintenant c'est mardi 06/04/4 20:25:49
maintenant c'est Mardi 06 Avr 4 20:25:49
maintenant c'est mardi 06 Avr 2004 20:25:49

L'appel depuis le script doit ce faire comme suit:

use FrDate;

# pour la date et l'heure actuelle:
$fd = maintenant($mod_affichage);

#pour la date et l'heure (des dernier accès, modif et change) d'un fichier
$frd = datefichier($mod_affichage, $opd, $file);


En General les modules