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 :

Extraire une archive tgz avec un script perl


Sujet :

Langage Perl

  1. #1
    Membre très actif Avatar de Olivier.p
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 89
    Par défaut Extraire une archive tgz avec un script perl
    Bonjour,

    Comme l'indique l'intitulé je cherche à extraire une archive tgz grâce à un scrip perl. J'ai essayé le module Archive::Tar mais ça ne marche pas... J'ai aussi installé le module IO::Zlib, pas plus de succès.

    Mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!C:\\Perl\\bin
    use Archive::Tar;
    my $tar = Archive::Tar->new;
    $tar->read("D:\\mes tests\\test archive\\Mon_fichier_au_2009-04-20.txt.tgz",1);
    $tar->extract();

    Note : ca ressemble beaucoup à la perldoc

    Message d'erreur :

    Cannot read compressed format in tar-mode at test.pl line 4
    No files found for D:\mes tests\test archive\Mon_fichier_au_2009-04-20.txt.tgz at test.pl line 5

    Le code ci-dessous me permet de vérifier que le fichier est bien dans ce répertoire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!C:\\Perl\\bin
    my ($fichier, $dossier) = (undef, "D:\\mes tests\\test archive");
    opendir (my $dir, $dossier) or die "$dossier n'existe pas !";
    my @files = readdir $dir;
    print "Mes fichiers : @files\n";
    closedir $dir;
    (merci à GLDavid et la FAQ )

    Quelqu'un a une idée ?

    En attendant je vais me replonger pour la n ème fois dans la perldoc, elle est pourtant claire... Merci du coup de pouce

    Ps : mon script tourne sous win Xp avec ActivePerl (je ne pense pas que ça ait un impact mais bon...)

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Utilise le module Archive::Extract

  3. #3
    Membre très actif Avatar de Olivier.p
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 89
    Par défaut
    Rapide la réponse

    Grâce à ce module (qui était fourni avec ActivePerl) voilà ce que j'ai pondu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!C:\\Perl\\bin
    use Archive::Extract;
    my $file = "D:\\mes tests\\test archive\\Mon_fichier_au_2009-04-20.txt.tgz";
    my $ae = Archive::Extract ->new( archive => "$file");
    my $ok = $ae -> extract( to => "\\tmp") or die $ae -> error;
    my $check = $ae -> is_tgz;
    print "check = $check\n";
    L'erreur retournée :
    Cannot read compressed format in tar-mode at C:/Perl/lib/Archive/Extract.pm line 673
    Unable to read 'D:\mes tests\test archive\Mon_fichier_au_2009-04-20.txt.tgz' : Cannot read compressed format in tar-mode at test.pl line 5
    No '/bin/tar' program found at test.pl line 5
    Unable to untar file 'D:\mes tests\test archive\Mon_fichier_au_2009-04-20.txt.tgz' at test.pl line 5
    Extract failed, no extractor found at test.pl line 5
    Extract failed, no extractor found at test.pl line 5.

    Si j'enlève la ligne 5 (my $ok = $ae -> extract( to => "\\tmp") or die $ae -> error j'obtiens bien 1 pour le check.

    J'ai l'impression qu'il ne trouve pas Extract.pm(le chemin est en "/" au lieu du "\" pour Windows, 1ere ligne de l'erreur) le problème peut il venir de là ?

    Merci en tout cas pour ton aide, très efficace la communauté de ce forum

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Premier conseil :

    Evitez les \\ dans les chemins en Perl. Perl est très intelligent et prefere la notation / comme sous linux .

    Utilisez use warnings et strict;

    essaye ceci :
    ppm install Archive::Extract -f
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/usr/bin/perl
    use warnings;
    use strict;
    use Archive::Extract;
    my $file = "D:/mes tests/test archive/Mon_fichier_au_2009-04-20.txt.tgz";
    my $ae = Archive::Extract ->new( archive => $file);
    my $ok = $ae -> extract( to => "D:/tmp") or die $ae -> error;
    my $check = $ae -> is_tgz;
    print "check = $check\n";

  5. #5
    Membre très actif Avatar de Olivier.p
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 89
    Par défaut
    Mais tu es trop rapide ! Serais tu un script perl ultra performant dont la mission est de répondre aux usagers désoeuvrés de ce langage ?!

    J'ai récupéré le code que tu as mis mais ça ne marche toujours pas et je n'ai pas plus d'informations dans le message d'erreur.

    Je ne peux pas installer le module via la console, la connexion a échoué. Je pense que les rêgles de sécurité empèchent ce type de connexion (je suis au boulot).

    J'essaierai ce soir à la maison.

    Merci pour le temps que tu me consacres et l'astuce du "/". Je découvre perl est c'est vraiment un super langage, il m'épate de plus en plus

  6. #6
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    si tu fais en console
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -MArchive::Extract -e ""
    , as tu un message d'erreur ?

  7. #7
    Membre très actif Avatar de Olivier.p
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 89
    Par défaut
    Non

    Pour pas mettre que "non" : A quoi sert cette commande s'il te plait ?

    Si tu continues ta suite en temps de réponse tu dois répondre en moins d'une minute ! (1ere réponse : délai 10 minutes, 2eme : 7 minutes, 3eme : 4 minutes...) Juqu'où ira Djibril ?!

  8. #8
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    cette une ligne de command Perl te permettant de faire du unline. Donc elle fait l'equivalent d'un use Module;

    As tu un répertoire D:/tmp ?

  9. #9
    Membre très actif Avatar de Olivier.p
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 89
    Par défaut
    (raté tu plafonnes à 4 minutes )

    Oui le répertoire a été crée par le script.

  10. #10
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    et tu as un message d'erreur ou non ?

  11. #11
    Membre très actif Avatar de Olivier.p
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 89
    Par défaut
    ( Oh mon dieu il l'a fait : la réponse en moins d'1 minute ! )

    Non j'ai rien je ne crois pas qu'il interprète mon code (vu qu'il ne m'affiche pas d'erreur ni mon print...)

    j'ai essayé : perl -MArchive::Extract -e "" et perl -MArchive::Extract -e "test.pl"

  12. #12
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    non, je te demande pas ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/usr/bin/perl
    use warnings;
    use strict;
    use Archive::Extract;
    my $file = "D:/mes tests/test archive/Mon_fichier_au_2009-04-20.txt.tgz";
    my $ae = Archive::Extract ->new( archive => $file);
    my $ok = $ae -> extract( to => "D:/tmp") or die $ae -> error;
    my $check = $ae -> is_tgz;
    print "check = $check\n";
    Te donne quel résultat ?

  13. #13
    Membre très actif Avatar de Olivier.p
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 89
    Par défaut
    Exactement la même erreur que mon deuxième post :

    Cannot read compressed format in tar-mode at C:/Perl/lib/Archive/Extract.pm line 673
    Unable to read 'D:\mes tests\test archive\Mon_fichier_au_2009-04-20.txt.tgz' : Cannot read compressed format in tar-mode at test.pl line 7
    No '/bin/tar' program found at test.pl line 7
    Unable to untar file 'D:\mes tests\test archive\Mon_fichier_au_2009-04-20.txt.tgz' at test.pl line 7
    Extract failed, no extractor found at test.pl line 7
    Extract failed, no extractor found at test.pl line 7.


  14. #14
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    as tu un utilitaire de compression sur ton PC (winzip, izarc ou autre ) ?

  15. #15
    Membre très actif Avatar de Olivier.p
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 89
    Par défaut
    oui 7zip

    Edit : Bon je profite de ton départ pour rentrer chez moi. Encore merci pour ton aide, j'espère être suffisament opérationnel pour pouvoir aider à mon tour, un jour...

    Bien sûr toute personne pensant pouvoir relever ce défi peuvent se joindre à nous !

  16. #16
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    t'es sur que ton archive D:/mes tests/test archive/Mon_fichier_au_2009-04-20.txt.tgz n'est pas pourri ?

  17. #17
    Membre très actif Avatar de Olivier.p
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 89
    Par défaut
    Nan il s'ouvre convenablement avec une extraction "manuelle".

    Je suis chez moi là mais j'essaierai d'en recréer un demain sinon...

  18. #18
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    bah tu peux en recreer un au pif de chez toi et tester le script

  19. #19
    Membre très actif Avatar de Olivier.p
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 89
    Par défaut
    Dak si j'ai le temps, j'ai des invités après. Donc pas sûr ! En tout cas demain je continuerai

  20. #20
    Membre très actif Avatar de Olivier.p
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 89
    Par défaut
    Ok j'ai donc fait deux essais intéressants : Le premier sur un fichier d'abord transformer en archive .tar puis en gzip pour obtenir un fichier tar.gz. Là le script a marché niquel. Puis j'ai récupérer mon fichier de test .tgz et là même erreur qu'au boulot. Faudrait que je teste sur un autre fichier et que je me renseigne comment ces fichiers sont archivés. En tout cas manuellement (avec 7zip) le fichier s'ouvre !

    Bien merci pour ton aide, c'est bien de mon côté que ça marche pas.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 5
    Dernier message: 16/03/2007, 12h16
  2. [Zip] Extraire une archive zip sur le serveur
    Par troxsa dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 13/03/2007, 11h15
  3. lire le contenu d'une adresse mémoire avec VB Script
    Par pierre.zelb dans le forum VBScript
    Réponses: 2
    Dernier message: 13/12/2006, 13h32
  4. Executer un script non Perl avec un script Perl.
    Par jabrane1983 dans le forum Langage
    Réponses: 6
    Dernier message: 03/08/2006, 14h43
  5. [PEAR] Créer une archive tgz
    Par Fusio dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 16/07/2005, 12h57

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