FrDate4File.pl
Sous-programme Perl pour dater les fichier en français
alain Adelmar
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');
#
Adelmar Alain l'homme
qui reste égal à lui même, et vice-versa.
# 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
#
Adelmar Alain l'homme
qui programme les doigts dans le nez et les mains dans les poches.