IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

[PERL] la fonction stat


Sujet :

Langage Perl

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut [PERL] la fonction stat
    Bonjour à tous.

    Voilà mon souci.
    J'utilise la fonction stat pour sortir quelques propriétés sur des fichiers et notamment la date de la dernière modification du fichier (à défaut d'avoir trouver la date de création du fichier ....)

    Ainsi, si je fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @infos=stat($fichier);
    $infos[9] me donne le temps de la dernièr emodification depuis epoch.

    or je voudrais formater ce $infos[9] en une date et une heure du type jj/mm/aaaa hh:mm

    Comment faire, je n'y parviens pas.

    Merci d'avance pour vos suggestions.
    tout le monde est d'accord pour critiquer la pensée unique

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 46
    Points : 49
    Points
    49
    Par défaut
    Bonjour

    Un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print localtime($infos[9]);
    Non ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Oui, j'ai pensé à faire ça.

    J'ai la fonction suivante:
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    sub ConvertEpochToDate(@_)
    {
        my $time=$_[0];
        my $type=$_[1];
        my $resdate;
        (my $sec,my $min,my $hour,my $mday,my $mon,my $year,my $wday,my $yday,my $isdst) = localtime($time);
        my $num=length ($year);
        my $year=substr ($year,1,$num);
     
       if ($sec < 10) {
          $sec = "0$sec";
       }
       if ($min < 10) {
          $min = "0$min";
       }
       if ($hour < 10) {
          $hour = "0$hour";
       }
       if ($mon < 10) {
          $mon = "0$mon";
       }
       if ($mday < 10) {
          $mday = "0$mday";
       }
       $month = ($mon + 1);
       if ($month < 10) {
          $month = "0$month";
       }
        switch($type)
        {
         case 'cdate'{$resdate = "$mday$month$year";}
         case 'ldate'{$resdate = "$mday$month$year\_$hour$min$sec";}
         case 'hour'{$resdate = "$hour:$min";}
         case 'anglais'{$resdate = "$month\/$mday\/20$year$ at $hour\:$min";}
         case 'français'{my @months = ("Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Decembre");$resdate = "$mday $months[$mon] 20$year $hour\:$min\:$sec";}
     
         else {die "\nerror GetDate(): type de date non reconnu\n";}
         }
     
    return $resdate;     
    }
    Mais ça ne ressort rien de bon. En appelant la fonction comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    my @stats=stat($FileName); 
    $hour=&TX2::Tools::ConvertEpochToDate($stats[9],'hour');
    $hour contient la valeur:

    tout le monde est d'accord pour critiquer la pensée unique

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 46
    Points : 49
    Points
    49
    Par défaut
    Ton code parait ok !!!

    Chez moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    my @stats = stat("/tmp/dump.tmp");
    $time = $stats[9];
    (my $sec,my $min,my $hour,my $mday,my $mon,my $year,my $wday,my $yday,my $isdst) = localtime($time); 
    print $hour."\n";
    marche très bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #./test.pl
    11
    # ls -la /tmp/dump.tmp
    -rw-r--r--  1 root root 36720 2005-10-25 11:41 /tmp/dump.tmp
    Tu es sur que ton fichier scanné par stat n'a pas été modifié à 01:00 heure

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Non j'obtiens toujours le même résulat, même sur des fichiers qui ont été modifiés il y a deux jours....
    Je vai scontinuer à chercher....
    tout le monde est d'accord pour critiquer la pensée unique

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Et bien autant pour moi !! Je ne suis qu'un idiot !!!!
    J'avais oublié de préciser le chemin de mon fichier !!!!!!

    ça fonctionne maintenant.

    Merci pour ton aide.

    Et bonne journée !
    tout le monde est d'accord pour critiquer la pensée unique

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. my_ls probleme avec la fonction stat
    Par toams69 dans le forum C
    Réponses: 1
    Dernier message: 11/11/2008, 11h38
  2. Problème fonction stat
    Par Yann39 dans le forum POSIX
    Réponses: 2
    Dernier message: 11/12/2007, 13h10
  3. Fonction stat
    Par wkd dans le forum C
    Réponses: 4
    Dernier message: 01/01/2006, 11h43
  4. Réponses: 2
    Dernier message: 16/11/2005, 10h49
  5. Réponses: 10
    Dernier message: 07/10/2003, 16h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo