Besoin d'aide en Programmation Perl - Perl - Programmation
Marsh Posté le 06-02-2003 à 11:54:53
vfqs a écrit : Est-il possible et coment fait on pour qu'un programme perl puisse récuperer en argument le résulat d'une commande ? |
Tu voudrais qu'un programme Perl récupère comme argument externe le résultat d'une commande ?
Et pourquoi pas plutôt lancer directement la commande au sein même de ton programme Perl ?
Exemple, récupèration du répertoire courant :
Code :
|
En utilisant l'antiquote (accessible par la touche 7 du clavier), la sortie de la commande indiquée entre ` ` est directement dirigée vers ta variable, ici $RepCourant.
Si tu n'as pas besoin de récupérer ce que te renvoies la commande, tu peux utiliser system(ma_commande)
Et si tu veux que l'appel à la commande fasse quitter le programme Perl en cours de traitement, remplace system par exec
Marsh Posté le 06-02-2003 à 15:15:39
Aricoh a écrit : Tu voudrais qu'un programme Perl récupère comme argument externe le résultat d'une commande ?
|
C pas ce que je voulais. Sur ton exmple la commande est dans le programme perl. Moi ce que je voulais c comment envoyer un résultat de command au programme perl.
En fait ca sera un MTA qui enverra un message sur l'entrée standard d'un programme perl ou autre. Et comme je ne connais que le perl, benh...
Marsh Posté le 06-02-2003 à 15:22:39
vfqs a écrit : C pas ce que je voulais. Sur ton exmple la commande est dans le programme perl. Moi ce que je voulais c comment envoyer un résultat de command au programme perl. |
Ok ok
Un programme Perl peut recevoir ses arguments dans un tableau appelé @ARGV
Exemple tout bête, lancer le programme Perl toto.pl qui ne fait qu'afficher le 1er argument qu'on lui transmet au lancement :
Code :
|
voilà comment cette ligne de cde est traitée dans le prog toto.pl :
Code :
|
Marsh Posté le 06-02-2003 à 15:56:10
Aricoh a écrit :
|
Ca aussi deja testé. Tjrs pas ce que je veux. En tout cas grand merci de ton aide.
En fait un exemple tout simple: ls -l | grep txt
Comment ces deux command communiquent entre elles ?
Losque je fait un test avec un pregramme perl sous NT en ligne de cmd, g le message suivant: "Le processus a tenté d'écrire sur un canal non-existant."
Marsh Posté le 06-02-2003 à 16:10:53
sous NT en ligne de cmd, g le message suivant: "Le processus a tenté d'écrire sur un canal non-existant." c'est qui est logique vu que '|' est le pipe de Unix, c'est-à-dire la sortie standard du premier processus est redirigé sur l'entrée standard du second
Marsh Posté le 06-02-2003 à 16:32:37
western a écrit : sous NT en ligne de cmd, g le message suivant: "Le processus a tenté d'écrire sur un canal non-existant." c'est qui est logique vu que '|' est le pipe de Unix, c'est-à-dire la sortie standard du premier processus est redirigé sur l'entrée standard du second |
Euh... ca marche sous nt, je l'utilsie notament avec mes requête ldapsearch avec find.
Marsh Posté le 06-02-2003 à 17:27:32
Personne n'a une idée ?? G mal au crane de chercher... Commence a
Peut être pas faisable après tout.
Marsh Posté le 06-02-2003 à 17:39:55
vfqs a écrit : Personne n'a une idée ?? G mal au crane de chercher... Commence a |
Tu fais ca via l'operateur diamant.
Je m'explique: quand tu fais X | Y, le programme Y se retrouve avec la sortie standard de X dans son entree standard, cad <> en perl.
Par exemple
Code :
|
si tu as plein de lignes
Code :
|
Voila...
Marsh Posté le 06-02-2003 à 18:38:54
phoenix35 a écrit :
|
Merci un collègue m'a aidé et on a trouver presque pareil. (En tout cas bravo)
Voici:
Code :
|
Marsh Posté le 06-02-2003 à 18:49:49
Me suis gourré.
C plutot c qui suit qui marche plus:
Code :
|
Marsh Posté le 06-02-2003 à 10:58:56
Est-il possible et coment fait on pour qu'un programme perl puisse récuperer en argument le résulat d'une commande ?
Ex: ls -l | grep txt
En gros je cherche à connaitre le port de communication entre deux programme et la mise en place possible en perl.
Merci d'avance.
Message édité par vfqs le 06-02-2003 à 12:12:32