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 :

Handler d'un fichier, global à plusieurs scripts


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 TheDrev
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Par défaut Handler d'un fichier, global à plusieurs scripts
    Bonjour !
    J'ouvre un file handler avec la fonction open pour la création de log. Comment faire pour que ce file hanler soit visible dans d'autres scripts .pl ?

    J'ai bien penser a la passer en paramètres de fonction, mais cela ferai beaucoup de modifications et je préfère que ces fonctions s'occupent uniquement du traitement.

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Il serait nettement plus "propre" de le passer en paramètre, mais si tu n'y tiens pas, tu peux fournir dans ton module qui créée le file handle, un accesseur qui le retourne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    open my $LOG, ">", "log.txt";
    ...
     
    sub get_log_fh {
      return $LOG;
    }
    mieux : le module qui créée le file handle fourni également une fonction d'écriture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    sub printf_log {
      printf $LOG @_;
    }
    sub print_log {
      print $LOG @_;
    }

  3. #3
    Membre très actif
    Avatar de TheDrev
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Par défaut
    en fait je n'utilise pas les modules pour le moment (je n'ai pas totalement compris comment cela se structure en perl), je suis tout en procédurale, avec un main.pl qui inclut quelques autres .pl...

    J'ai essayé d'inclure main.pl depuis un autre script, mais le code est alors exécuté 2 fois !

    Il faurdai que le handler soit ai une portée globale a tout les scripts... peut être qu'il faudra que je le vire du main.pl ?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Août 2008
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Août 2008
    Messages : 505
    Par défaut
    Raaaah mais c'est laid ! Blague à part, les modules ne sont pas très compliqués à élaborer, et offrir l'accès via une méthode particulière serait quand même un gagae de réussite du projet.

  5. #5
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Il faurdai que le handler soit ai une portée globale a tout les scripts
    Peut-être peux-tu créer ton handle dans un script.pm puis l'appeler à partir de tous les autres scripts.

    OpenFh.pm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    package OpenFh;
     
    use base 'Exporter';
     
    our @EXPORT = qw($fh); # noms exportés par défaut
     
     
    open our $fh, '<', 'chemin/fichier' or die $!;   # ouverture fichier
     
    1;     # important, pour signaler que le module s'est bien chargé correctement

    main.pl

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!usr/bin/perl -w
     
    use strict;
    use warnings;
     
    use OpenFh;
     
    while (my $line = <$fh>){
    	print $line;
    }

    Perldoc :Exporter

  6. #6
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    TheDrev, si tu n'utilises pas les modules, peux-tu nous expliquer comment tu fais inter-agir tes différents scripts actuellement ?

    Comme dit thierry.chich, les modules (les plus simples, comme celui de Jasmine80) ne sont pas si compliqués, et sont quasiment la seule manière de concevoir une application perl réparties dans plusieurs sources différents (je connais encore "do", et c'est à peu près tout à ma connaissance).
    Et tant qu'à utiliser un module, autant créer des accesseurs plutôt que de fournir un accès aux variables, afin de limiter les effets de bord.

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

Discussions similaires

  1. drag drop de plusieurs fichiers vers le script ouvre plusieurs sessions
    Par gdoise dans le forum Applications et environnements graphiques
    Réponses: 9
    Dernier message: 06/09/2013, 03h07
  2. Script en Perl à partir d'un fichier global
    Par thenonodu81 dans le forum Programmation et administration système
    Réponses: 0
    Dernier message: 13/12/2012, 08h54
  3. Variable globale entre plusieurs scripts
    Par Dan25 dans le forum VBScript
    Réponses: 2
    Dernier message: 01/03/2011, 17h15
  4. Réponses: 12
    Dernier message: 30/06/2008, 20h56
  5. Variable Globale - Plusieurs scripts
    Par Ridculle dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/03/2008, 10h51

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