FrDate4File.pl

Sous-programme Perl pour dater les fichier en français

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

Ce script qui n'est pas tout à fait un module comme FrDate.html ou mieux encore DateFrench.html (je l'ai écris avant de savoir faire un module, donc très vieux), mais donne l'heure et la date en français pour le dernier accés, dernière modification, dernier changement d'inode par $opd, d'un fichier $file, sous le formatage que vous désirez par $mod_affichage. par défaut:

$opd vaut 0       => dernier accés
$mod_affichage => Mercredi 12/12/2003 18:45
mais peut sortir la date sous forme 200312121845 (pour inclure dans le nom d'un fichier)
ou verbeux comme:
Mercredi 12 Décembre 2003 à 18heure 45min
il est trés pratique car appelé par n'importe quel script en 1 ligne:
$fdt = do ('FrDate4File.pl');
Al script
# Adelmar Alain l'homme qui reste égal à lui même, et vice-versa.

le script


# package FrDate4File;

=head1 NOM

  frenchdate - donne l heure et la date en français

=head1 SYNTHAXE
  
  use FrDate4File;
  $frd = ffdt($file, $opd, $modep);   # done la date suivant ($opd:dernier access, modif,chang) du fichier en francais au format suivant ($modep: Mercredi 11/12/2003 18:45 ou 20031211 ou 20031211184503).

=head1 DESCRIPTION

  La variable scalaire retourné par le module sera une date en français
  formater selon votre besoin pour: 

    B<la date du fichier> avec 
    $frd = ffdt($file, $opd, $mod_affichage) ou 
      B<$file> est le nom du fichier
      B<$opd> est un chiffre de 0 a 2 representant:
          0 date de dernier acces
          1 date de derniére modification
          2 date du dernier changement d'inode
      B<$mod_affichage> est un chiffre de 0 a 2 representant:
        pour 0 la date comme: Mercredi 11/12/2003 18:45     (par defaut)
        pour 1 la date comme: Mercredi 11 Decembre 2003  (pour la Secla)
        pour 2 la date comme: 20031211184503    (pour liste et filename) 
 
 expl: si je veux la date du dernier acces en format liste je demanderai:
 $file = $foo;
 $opd = 0;
 $mod_affichage =2;
 $frd = ffdt($file, $opd, $modep);


=head1 AUTEUR

  Ce script à été écrit par Alain Adelmar aadelmar@free.fr
  publié sur http://aadelmar.free.fr/FrDate4File.html
  adresse : 6 rue de Tunis 33600 Pessac France

=cut



$st = 0;
&ffdt($file, $opd, $mod_affichage);

sub ffdt($file, $opd, $mod_affichage) {
  
my($file)=@_;
  
my($opd)=@_;
  
my($mod_affichage)=@_;
  
  
local @lsjour = qw(
           Dimanche
           Lundi
           Mardi
           Mercredi
           Jeudi
           Vendredi
           Samedi
          )
;
  
  
for $i(0 ..6) {
    
$fj{$i} = $lsjour[$i];
  
}
  
  
local @lsmois = qw(
           Janvier
           Février
           Mars
           Avril
           Mai
           Juin
           Juillet
           Aout
           Septembre
           Octobre
           Novembre
           Décembre
          )
;
  
for $i(0..11) {
    
$fm{$i} = $lsmois[$i];
  
}
  
  
#------pour afficher la date de fichier comme: 01/05/2003 20:05:30
  
  
@st = stat($file);
  
$atfs = $st[8];
  
$mtfs = $st[9];
  
$ctfs = $st[10];
  
  
#-----------------choix des options 
  
if ($opd == 1) {
    
@ls_mtfs = localtime($mtfs);
    
$lbl = "Modif";
    
&convert_time(@ls_mtfs, $lbl);
  
}
  
elsif ($opd == 2) {
    
@ls_ctfs = localtime($ctfs);
    
$lbl = "Change";
    
&convert_time(@ls_ctfs, $lbl);
  
}
  
elsif ($opd == 3) {
    
$all = 1;
    
@ls_atfs = localtime($atfs);
    
$lbl = "Acces";
    
&convert_time(@ls_atfs, $lbl);
    
$frt = "$lbl " . $frd . " _";  
    
@ls_mtfs = localtime($mtfs);
    
$lbl = "Modif";
    
&convert_time(@ls_mtfs, $lbl);
    
$frt += "$lbl " . $frd . " _";  
    
@ls_ctfs = localtime($ctfs);
    
$lbl = "Change";
    
&convert_time(@ls_ctfs, $lbl);
    
$frt += "$lbl " . $frd;
  
}
  
else {
    
@ls_atfs = localtime($atfs);
    
$lbl = "Acces";
    
&convert_time(@ls_atfs, $lbl);
  
}
}
 


sub convert_time(@ls) {
  
my(@ls)=@_;
  
  
for (@ls) {
    
$sjour = "$fj{$ls[6]}";
    
$smois = "$fm{$ls[4]}";
    
if ($ls[5] <= 100) {
      
$aa = "19" . "$ls[5]";
    
}
    
else {
      
$aa = "200" . ("$ls[5]"-100);
    
}
    
    
# mois idem localtime(x)[4] + 1 (because janvier = 0)
    
if ($ls[4] <= 8) {
      
$mm = "0" . ("$ls[4]" + 1);
    
}
    
else {
      
$mm = ("$ls[4]" + 1);
    
}
    
# jour idem localtime(x)[3] + 1 (because le 1 démarre à 0)
    
if ($ls[3] <= 8) {
      
$jj = "0" . "$ls[3]";
    
}
    
else {
      
$jj = $ls[3];
    
}
    
# les heures
    
if ($ls[2] <= 9) {
      
$hh = "0" . "$ls[2]";
    
}
    
else {
      
$hh = $ls[2];
    
}
     
# les minutes
    
if ($ls[1] <= 9) {
      
$mn = "0" . "$ls[1]";
    
}
    
else {
      
$mn = $ls[1];
    
}
     
# les secondes
    
if ($ls[0] <= 9) {
      
$ss = "0" . "$ls[0]";
    
}
    
else {
      
$ss = $ls[0];
    
}
  
}
  
  
if ($mod_affichage == 1) {
    
$frd = "$sjour $jj $smois $aa";
    
return $frd;
  
}
  
elsif ($mod_affichage == 2) {
    
$frd = "$aa" . "$mm" . "$jj" . "$hh" . "$mn" . " $ss";
    
return $frd;
  
}
  
else {
    
$frd = "$lbl $sjour $jj\/$mm\/$aa $hh:$mn:$ss";
    
return $frd;
  
}
}

END;



sous programme Perl est appelé de votre script par la ligne:
$dtf = do ('FrDate4File.pl');
en ayant au préalable placé ce module dans le même répértoire que votre script ou défini un chemin dans "do".
Vous aurez défini $opd et $mod_affichage pour le format d'affichage et la date (soit de création, de modif ou de changement d'inode) qui par défaut sont = 0;
(lire la doc) écrit par alain Adelmar le 13 Décembre 2003 Nouveau: Trouver ma dernière version le module
FrDate qui accompli ce que faisait FrDate4Now et FrDate4File alors qu'il pése que la moitié et posséde moult caractéristique que n'avait pas les deux autre comme: 1) des modes d'affichage encore plus varié dont deux codé, en carractére ansi, ce qui ne prend pas de place lors de l'affichage d'une date et heure dans le nom d'un fichier. Exemple: 2004 Janvier 12 à 16h34min et 28s peut s'écrire TAlh2Y donc triable. La prochaine mouture du Module FrDate.pm sera encore plus complet qu'a present.

En effet la dernière mouture est FrenchDate.pm et elle prend plus de 25 formats différants.
Retrouvez la sur la page FrenchDate, le man FrenchDate, le script (module Perl) FrenchDate.pm

Al script
# Adelmar Alain l'homme qui programme les doigts dans le nez et les mains dans les poches.