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 :

--stdout un peu particulier


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Tiger-222
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 76
    Par défaut --stdout un peu particulier
    Bonsoir,

    Après quelques recherches, je ne vois pas bien comment procéder, voici mon souhait :

    J'exécute mon script, un simple extracteur de ligne d'un fichier, et j'aimerai travailler directement sur la sortie.
    Je m'explique, le script s'appelle extract_char.pl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl extract_char.pl -e /home/tiger-222/fichier.txt
    Ce code renverra dans la console toutes les lignes du fichier (grâce à l'option -e).

    Une autre option me permettrait de travailler sur cette ligne pour faire tout un tas de choses (-t).

    Ce que je souhaites donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl extract_char.pl -e /home/tiger-222/fichier.txt --stdout | perl extract_char.pl -t -
    Ce qui se passerait, c'est que chaque ligne sera envoyée dans stdout et récupérée directement par un autre appel de ce même script en spécifiant "-" après l'option -t (ou utre, ça n'a aucune importance).

    Je n'ai aucun code à montrer puisqu'il s'agit d'un scénario pour illustrer la chose.

    D'où mes questions :
    1. Comment rediriger toute information vers stdout (en spécifiant une option telle que --stdout par exemple) ?
    2. Comment récupérer dans un second temps ce que le script renverra dans stdout ?
    À savoir qu'il ne faut pas attendre que la première occurrence du script s'achève pour commencer la 2ème, imaginons un fichiers de plusieurs gigas ce qui prendra un certain temps.

    Une idée ?

    Merci d'avance

  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
    Mmmm... j'avoue ne pas bien comprendre, et ne connaissant pas ton niveau en perl, j'ai du mal à te donner des conseils.

    Cela dit, print "toto" écrit simplement sur stdout.
    Donc si
    extract_char.pl contient des print, ils seront envoyés sur stdout.

    Tu peux donc écrire naturellement quelque chose comme

    perl extract_char.pl </home/tiger-222/fichier.txt | perl extract_char.pl -autres-options > /home/tiger-222/fichier_traite.txt

  3. #3
    Membre éclairé Avatar de Tiger-222
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 76
    Par défaut
    Merci d'avoir pris le temps de répondre.

    Je ne suis pas débutant en perl, j'ai de bonnes bases.
    Je me suis mal exprimé, je vais rééssayer avec un exemple plus parlant, presque mon cas.

    Imaginons deux programmes en perl. L'un est un générateur de mots, l'autre un un chiffreur.
    Soient gen_mot.pl et chiffre_mot.pl.

    Je génère des mots, la longueur du mot est de 5 caractères disons :De l'autre côté je désire chiffrer un mot quelconque :Ce que j'ai en tête : le générateur créer ses mots et le chiffreur les récupère directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl gen_mot.pl 5 | perl chiffre_mot.pl -
    Où "-" voudrait dire : je récupère ce que gen_mot.pl m'envoie.

    Qu'en penses-tu ?

  4. #4
    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
    J'en pense que si tu travailles avec un shell de type bash, tu as tout intérêt à regarder du coté de xargs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl gen_mot.pl 5 | xargs -n 1 perl chiffre_mot.pl
    Autre alternative :
    Dans chiffre_mot.pl, si @ARGV est vide, boucle sur <STDIN> au lieu de @ARGV.

  5. #5
    Membre éclairé Avatar de Tiger-222
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 76
    Par défaut
    J'opte pour xargs, ç'est pratique comme tout !

    Merci Philou67430

  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
    Unix/POSIX est plein de ressource.
    Néanmoins, ne perd pas de vue le traitement sur l'entrée standard, c'est qu'en même plus pratique pour faire des pipelines (puisque cela fonctionnera sur un système qui ne possède pas xargs, comme windows).

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

Discussions similaires

  1. [XSLT]Tableau un peu particulier
    Par JohnBlatt dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 21/06/2006, 18h14
  2. Un tri un peu particulier
    Par GregPeck dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/06/2006, 15h32
  3. Menu un peu particulier avec des onmouseover
    Par Jinroh77 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 21/02/2006, 14h30
  4. #define un peu particulier
    Par greuh dans le forum C
    Réponses: 14
    Dernier message: 12/10/2005, 16h42
  5. Réponses: 2
    Dernier message: 05/01/2004, 11h23

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