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 :

redirection de print


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Par défaut redirection de print
    Bonjour tous,

    Une petite question pour savoir s'il est possible de rediriger un print dans rien.

    Je m'explique:
    J'ai un programme qui execute une interpretation de log, donc qui traite beaucoup de données, et qui en affiche beaucoup.

    J'ai déja décomposé mes affichages en 2 avec STDERR et STDOUT pour différencier les affichages process des affichages de résultats (que l'on peut rediriger vers un fichier simplement).

    Maintenant j'aimerais ajouter une option "quick" qui me permette d'afficher uniquement certains de mes prints pour un affichage rapide (mes prints les plus importants).

    J'ai donc pensé redirigé mes print vers STDOUT1 et STDOUT2 (que j'aurais lié a STDOUT), puis si l'option est activé il faudrait que je puisse rediriger STDOUT2 vers rien... ou quelque part qui n'affecte pas l'affichage.

    Est ce possible ou existe t il une solution plus optimisée ?

    Merci d'avance.

    cdlt

  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
    au lieu d'afficher dans rien, pour quoi tout simplement ne pas printer s'il ton option est activée

  3. #3
    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
    Personnellement, j'ai l'habitude de créer une variables "$debug" contenant une valeur numérique, et de faire des print conditionnels :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    print "Info de niveau 1" if $debug > 0;
    print "Info de niveau 2" if $debug > 1;
    ...
    Mais je viens de voir qu'il y avait un module pour ça : Debug::Message (et sans doute d'autres).

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Par défaut
    Oui je vais utiliser cette méthode la,

    Je pensais que l'on pouvait configurer plus facilement cette redirection, pour un souci de maintenabilité (définir plusieurs dest STDERR, STDOUT1, STDOUT2..., et les configurer en début de script).

    je vais le faire avec des if, ce qui m'embete c'est que si une modif est a faire, tout les prints seront a redéfinir...(au vue de la taille du script ca peut vite devenir embetant).

    Merci a vous,

    Bonne fin de journée

  5. #5
    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
    Mmmh... je ne vois pas en quoi les print sont plus à modifier avec le méthode du if, qu'avec la méthode d'un filehandle distinct

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Par défaut
    Et bien la méthode du if permet de savoir si l'affichage doit ou ne doit pas etre executé.

    Avec des filehandle (si on pouvait le rediriger dans rien), on pourrait gérer aussi bien si l'affichage doit etre executé mais également la destination de l'affichage.

    Cette méthode ne présente pas de probleme actuellement mais si par la suite le script doit évoluer, les modifications seront moins evidentes.

  7. #7
    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
    Pour gérer des filehandle multiples, tu peux alors utiliser un tableau de FH :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print { $OUT[$debug] } "message" if $debug > 0;
    (bien lire le manuel de open et print pour ce qui concerne les filehandle scalaire, car il y a des contraintes à connaitre).

  8. #8
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Citation Envoyé par sone47 Voir le message
    Oui je vais utiliser cette méthode la,

    Je pensais que l'on pouvait configurer plus facilement cette redirection, pour un souci de maintenabilité (définir plusieurs dest STDERR, STDOUT1, STDOUT2..., et les configurer en début de script).

    je vais le faire avec des if, ce qui m'embete c'est que si une modif est a faire, tout les prints seront a redéfinir...(au vue de la taille du script ca peut vite devenir embetant).
    Quand tu penses ça, ton réflexe devrait être : peut-on factoriser tout ça au lieu d'éparpiller les détails du debug partout ?
    Evidemment la réponse est oui, il suffit d'utiliser dès l'origine une fonction personnelle différente de print(), que tu peux redéfinir quand tu veux. Une encore meilleure solution serait de s'intéresser aux module de log pour Perl, certains sont très puissants et très pratiques (la rolls, peut-être même un peu trop extensive pour tes besoins).

    --
    Jedaï

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

Discussions similaires

  1. Redirection des messages "PRINT" vers un fichier texte
    Par KarimBERRI dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/05/2014, 19h14
  2. Redirection sortie print AWK ?
    Par Moostiq dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 22/03/2013, 15h10
  3. Redirection echo ou print en premiere ligne d'un fichier existant
    Par kalwin dans le forum Shell et commandes POSIX
    Réponses: 6
    Dernier message: 28/09/2010, 14h13
  4. [ASE 12.5.1] Redirection de PRINT dans un fichier de log
    Par zayro dans le forum Adaptive Server Enterprise
    Réponses: 1
    Dernier message: 21/04/2006, 12h48
  5. Réponses: 1
    Dernier message: 21/04/2006, 12h48

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