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

Modules Perl Discussion :

pb gestion de fichier par un package


Sujet :

Modules Perl

  1. #1
    Membre régulier Avatar de scorbo
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 176
    Points : 83
    Points
    83
    Par défaut pb gestion de fichier par un package
    Salut,

    J'ai un petit souci dans la gestion de fichier. J'ai fait un package contenant plusieurs fonctions permettant de créer un fichier (avec le nom que je lui donne en paramètre), d'ajouter des lignes et de fermer le fichier. Ce package me permet de gèrer un fichier log.
    A un certain moment j'appelle la fonction de création et par moment celle d'ajout de ligne. Le pb c'est que le descripteur de fichier est fermé dès que la fonction de création se termine. Comment garder ce descripteur actif dans le package ?

    Merci !

  2. #2
    Membre régulier Avatar de elvivo
    Inscrit en
    Mai 2002
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 105
    Points : 104
    Points
    104
    Par défaut
    As tu utilise la classe FileHandle ou directement les fonctions de manipulation de fichiers ?
    In code we trust !!

  3. #3
    Membre régulier Avatar de scorbo
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 176
    Points : 83
    Points
    83
    Par défaut
    pour être plus concret voilà une partie de mes fonctions :

    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
    sub createFile {
        my $name = shift;
     
        if(!sysopen(LOG, "./$name.xml", O_RDWR|O_CREAT)) {
            print ("can't create $name file, sorry...\n");
            return $FALSE;
        }
     
        print LOG "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
        LOG->autoflush();
    }
     
    sub addMessage {
       my $message = shift;
       print LOG $message;
    }
     
    sub closeFile {
        close(LOG);
    }
    et toutes ces fonctions sont appelées par un autre package. Bon ok là on voit pas forcément l'intérêt de faire un package spécialement pour ça, mais je n'ai mis qu'une partie du code pour illustrer.

  4. #4
    Jeh
    Jeh est déconnecté
    Membre actif Avatar de Jeh
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 203
    Points : 250
    Points
    250
    Par défaut

    Ton descripteur n'est visible que dans la fonction dans laquelle il est créé.
    Tu as deux solutions :
    • Soit tu renvoies ton descripteur lorsque tu utilises ta fonction de création et tu passes ce descripteur à chaque autre fonction,
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
       
      my $fichier = createFile('toto.txt');
      ...
      addMessage($fichier,'mon message');
      ...
      closeFile($fichier);

    • Soit tu utilises la notion d'objet et de méthode qui me parait dans ton cas la solution la plus appropriée.
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
       
      my $fichier = new File('toto.txt');
      ...
      $fichier->addMessage('mon message');
      ...
      $fichier->closeFile();
      => c'est quand même plus propre...

    Pour plus d'infos sur l'implémentation objet avec Perl regarde par ici
    Verre vide je te plains, verre plein, je te vide.

  5. #5
    Membre régulier Avatar de scorbo
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 176
    Points : 83
    Points
    83
    Par défaut
    Effectivement, c'est quand même plus propre avec la notation objet, d'ailleurs j'avais tout développé en considérant mes packages comme des classes donc ça m'arrange. Merci

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

Discussions similaires

  1. Gestion des fichiers par utilisateurs
    Par badi3a82 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 06/07/2010, 11h31
  2. Gestion de fichiers xml par php
    Par omman95 dans le forum Langage
    Réponses: 6
    Dernier message: 14/10/2006, 07h30
  3. Gestion de fichier par fopen
    Par clampin dans le forum C
    Réponses: 3
    Dernier message: 02/10/2006, 20h51
  4. [Gestion de fichiers] Lecture octet par octet
    Par kendras dans le forum C
    Réponses: 21
    Dernier message: 18/09/2006, 15h08
  5. Gestion accès au fichier par utilisateur
    Par Invité dans le forum Langage
    Réponses: 11
    Dernier message: 18/04/2006, 12h26

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