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 :

Problème création d'une archive d'un fichier en perl


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 45
    Par défaut Problème création d'une archive d'un fichier en perl
    Bonjour,

    je souhaite créer un script perl qui me permettra de créer une archive zip d'un nom que j'aurai passé en paramètre lors de l'appel. Le nom du fichier zip sera aussi passé en paramètre. Cela fonctionne relativement bien en local. Mais lorsque je j'exécute mon script sur serveur le fichier archive est bien crée. Mais pour dézipper j'obtiens le chemin complet du fichier. Ce n'est qu'après avoir ouvert tous les dossiers que j'accède au fichier que je voulais zipper. Quelqu'un peut-il m'aider?

    Ci dessous mon bout de code :
    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
    #!/usr/bin/perl
     
    use Archive::Zip qw( :ERROR_CODES :CONSTANTS );
     
    if (length($ARGV[0]) eq 0) 
    {
    	die "Le fichier en entrée est manquant!";
    }
    if (length($ARGV[1]) eq 0) 
    {
    	die "Le fichier resultat est manquant";
    }
    my $entree = $ARGV[0];
    my $tmp = "";
    my $zip = Archive::Zip->new();
    $tmp = $zip->addFile($entree);
    die 'write error' if $zip->writeToFileNamed($ARGV[1]) != AZ_OK;

  2. #2
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    zip recrée l'arborescence qui contient ton fichier

    si tu veux éviter cela, passe un 2e paramètre à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    addFile( $fileName , $newName )
    contenant seulement le nom du fichier

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    my $entree = "/dossier/fichier.log";
    my $tmp = "";
    my $zip = Archive::Zip->new();
    #$tmp = $zip->addFile($entree); # recréera /dossier
    $tmp = $zip->addFile($entree, "fichier.log"); # sauvera à la racine
    die 'write error' if $zip->writeToFileNamed("/dossier/ziparchive.zip") != AZ_OK;

  3. #3
    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
    Bonjour,

    Voici un programme très simple et proprement écrit
    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
    #!/usr/bin/perl
    use strict;
    use warnings;
    use File::Basename;
    use Getopt::Long;
    use Archive::Zip qw( :ERROR_CODES :CONSTANTS );
     
    my ( $fichier_entree, $fichier_resultat ) = ();
    GetOptions(
      'input|i=s'  => \$fichier_entree,
      'output|o=s' => \$fichier_resultat,
    );
     
    if ( not defined $fichier_entree ) { die "Le fichier en entrée est manquant!"; }
    if ( not defined $fichier_resultat ) { die "Le fichier resultat est manquant"; }
    my $zip = Archive::Zip->new();
    my $tmp = $zip->addFile( basename($fichier_entree) );
    unless ( $zip->writeToFileNamed($fichier_resultat) == AZ_OK ) { die 'write error'; }
    Pour l'appeler : perl TonScript.pl -i fichier_entree.txt -o resutat.zip

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 45
    Par défaut
    Je ne savais pas qu'on pouvait mettre deux paramètres dans le addFile.

    Merci à vous deux, ça fonctionne.

  5. #5
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    n'hésite à aller consulter la documentation des modules que tu utilises sur CPAN, tu pourras trouver des éléments qui te manquent !

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 45
    Par défaut
    Merci! Je n'y manquerai pas.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 28/07/2009, 21h38
  2. [C++] Création d'une classe dans un fichier
    Par Pfeffer dans le forum C++Builder
    Réponses: 1
    Dernier message: 02/05/2007, 15h49
  3. Problème création d'une requete SQL (categorie,sous-cat)
    Par Raideman dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/11/2006, 15h23
  4. Création d'une archive.
    Par superspag dans le forum C++
    Réponses: 1
    Dernier message: 01/09/2006, 11h35

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