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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 ?

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 16/03/2007, 13h16
  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, 12h15
  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, 14h32
  4. Executer un script non Perl avec un script Perl.
    Par jabrane1983 dans le forum Langage
    Réponses: 6
    Dernier message: 03/08/2006, 15h43
  5. [PEAR] Créer une archive tgz
    Par Fusio dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 16/07/2005, 13h57

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