Lecture d'un fichier et conversion date Perl

Résolu
bisbis1985 Messages postés 57 Statut Membre -  
dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je suis un débutant en Perl , J'aimerai lire un fichier de format Nombre Date Nombre et convertir la date en seconde

Exemple d'entete :

23446663 2010-08-20 23:34:23 9899292

Merci de votre aide

8 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    $ export TZ=$(date +%Z)
    $ 
    $ cat  p2
    #!/usr/bin/perl
    
    use Time::Piece ;
    open(my $in,  "<", $ARGV[0]);
    while (<$in>) {
       chomp;
       ($c1,$c2,$c3,$c4)=split(/\s+/);
       my $t = Time::Piece->strptime($c2 . " " . $c3,"%Y-%m-%d %T");
       print $t->strftime("%s\n");
    }
    
    $ cat a2
    23446663 2010-08-20 23:34:23 9899292
    $ 
    $ ./p2 a2
    1282347263
    $ 
    $ # vérifions
    $ d="2010-08-20 23:34:23" ; date -d "$d"  +%s
    1282347263
    $
    0
  2. bisbis1985 Messages postés 57 Statut Membre 3
     
    Bonjour

    Merci pour ta réponse mais je voudrais afficher la meme forme du fichier en remplaçant 2010-08-20 23:34:23 par 1282347263

    Cad

    23446663 1282347263 9899292
    535366367 1282347267 0029329

    Et Merci bcp
    0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    alors on imprime $c1, le temps et $c4, remplacer
    print $t->strftime("%s\n");
    par
    printf "%s %s %s\n", $c1, $t->strftime("%s"), $c4;
    0
  4. bisbis1985 Messages postés 57 Statut Membre 3
     
    Bonjour

    Je l'execute sous windows , il me donne just les 2 champ 1 er et 3 eme

    perl test.pl a2,

    23446663 9899292
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    je l'exécute sur Linux.
    Il n'y a pas de message d'erreur ?
    pour voir si il lit tous les champs imprimer
    printf "%s %s %s %s\n", $c1, $c2, $c3, $c4 ;
    0
  7. bisbis1985 Messages postés 57 Statut Membre 3
     
    Il lit tous les champs mais pr le résultat il n'affiche pas le 2 eme champs
    0
  8. bisbis1985 Messages postés 57 Statut Membre 3
     
    Je pense que ce time:Piece n'existe pas sous Perl version windows nn !!
    0
  9. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    que répond cette commande
     perl -e 'use POSIX qw(strftime); print strftime("%Y-%m-%d %H:%M:%S\n", localtime)'
    0