Bonjour
Je voudrais savoir s'il existe une fonction qui permet d'afficher la date de dernière modification d'un fichier ?
Merci![]()
Bonjour
Je voudrais savoir s'il existe une fonction qui permet d'afficher la date de dernière modification d'un fichier ?
Merci![]()
oui biensur. Dans notre belle FAQ.
http://perl.developpez.com/faq/perl/...r-les-fichiers
voilà
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 my $fichier = "/home/Olivier_Regnie/toto.txt"; my @info_fichier = stat($fichier); print "date dernier modification : $info_fichier[9]\n";
La Faq, oui
Cela affiche le nombre de secondes écoulées entre 01/01/1970 à la date de dernière modification. Ok, je comprends. Il me reste maintenant à convertir ce nombre afin d'obtenir un résultat compréhensible comme par exemple, 2007/11/01 02:06:55. Je vais regarder si je trouve des infos à ce sujet.
Merci Dijb![]()
sinon pour gerer les secondes et dates, j'ai fais quelques bouts de scripts dans la FAQ (section astuces et divers)
![]()
Bien donc j'ai réalisé ceci (le code est incomplet):
La date s'affiche sous la forme de:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #!/usr/bin/perl -w use POSIX qw(strftime); $file = '/home/olivier/test.cgi'; @lastmodified = stat($file); $lastmodified[9]=strftime"%Y/%m/%d %H:%M:%S",localtime; print $cgi->pre('$Id: error.cgi,v 1.1 '.$lastmodified[9].' Olivier Exp $');
Mais lorsque je refraichis la page les secondes défilent
Code : Sélectionner tout - Visualiser dans une fenêtre à part $Id: test.cgi,v 1.1 2007/11/08 13:40:23 Olivier Exp $
Qui peut m'expliquer mon erreur s'il vous plaît ?
Merci![]()
bon en faite, que souhaites tu faire?
Je souhaite afficher la date de modification et pas l'heure actuelle![]()
en reprenant l'exemple de la faq
j'ai juste modifié le return et tu peux l'adapter à tes souhaits
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 $file = '/home/olivier/test.cgi'; @lastmodified = stat($file); my $date_modif = date($lastmodified[9]); print $cgi->pre('$Id: error.cgi,v 1.1 '.$date_modif.' Olivier Exp $'); sub date { my $time = shift || time; #$time par defaut vaut le time actuel my @tab_date =localtime($time); #le mois renvoyé est compris entre 0 et 11 d'où la modification $tab_date[4] = $tab_date[4] + 1; #L'annee renvoie est celle à partir de 1900 d'ou la modification $tab_date[5] = $tab_date[5] + 1900; # On rajoute 0 si le chiffre est compris entre 1 et 9 foreach (@tab_date) { s/^(\d)$/0$1/; } my ($seconde, $minute, $heure, $jour , $mois , $annee, $jour_semaine , $jour_annee , $heure_hiver_ou_ete ) = @tab_date; return "$jour/$mois/$annee"; }
courage
Le code est bien trop long
J'ai trouvé cette solution:
Qu'en penses-tu ? Cela fonctionne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #!/usr/bin/perl -w use POSIX 'strftime'; # Variables $file='/home/olivier/www/cgi-bin/test.cgi'; @lastmodified=stat($file); $date=strftime("%Y/%m/%d %H:%M:%S",localtime($lastmodified[9])); print $cgi->pre('$Id: test.cgi,v 1.1 '.$date.' Olivier Exp $');![]()
Ecoute, c'est parfait alors.
En perl tout chemin mène à rome, chacun fait son choix.
Maintenant, question longueur code, on peut toujours faire plus court
Pour continuer ta formation tu peu lire les cours et tutoriels pour apprendre Perl ici : http://perl.developpez.com/cours/
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager