[Perl] Recevoir les infos passees via un pipe
NaeiKinDus
-
blux Messages postés 5032 Date d'inscription Statut Modérateur Dernière intervention -
blux Messages postés 5032 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour a tous !
J'aurais aime savoir comment faire pour recuperer les informations transmises au script perl au moyen d'un pipe(je travaille sous unix).
Normalement, on recolte depuis l'entree standart, mais impossible de faire marcher ca !
Exemple de ligne de commande :
user: cat fichier | script.pl
Dans ce script, je dois recuperer les infos transmises par le cat, et les traiter !
Ca donnerait, en gros :
if (<STDIN>)
{
Instructions pour le cas ou le script est appele avec un pipe
}
else
{
Instructions pour le cas ou le script est appele directement
}
Probleme : avec ce code, le script semble attendre une ligne de commande sur l'entree standart... comment resoudre ca ?
Merci d'avance :)
J'aurais aime savoir comment faire pour recuperer les informations transmises au script perl au moyen d'un pipe(je travaille sous unix).
Normalement, on recolte depuis l'entree standart, mais impossible de faire marcher ca !
Exemple de ligne de commande :
user: cat fichier | script.pl
Dans ce script, je dois recuperer les infos transmises par le cat, et les traiter !
Ca donnerait, en gros :
if (<STDIN>)
{
Instructions pour le cas ou le script est appele avec un pipe
}
else
{
Instructions pour le cas ou le script est appele directement
}
Probleme : avec ce code, le script semble attendre une ligne de commande sur l'entree standart... comment resoudre ca ?
Merci d'avance :)
4 réponses
-
Salut,
#!/usr/bin/perl while (<>) { printf("%s\n",$_); }
cat toto | test1.pl
Ca marche bien chez moi... (AIX 5.2)
-
Salut,
Pourquoi ne pas ouvrir pour lecture ton fichier carrément dans le script PERL et faire le traitement sur son contenu ensuite. Ça me parrait moins compliqué à faire! -
L'exemple de blux en ligne de commande
perl -n -e 'printf "%s\n",$_' index.html
-
Re blux,
voilà ta version en ligne de commande avec |cat fichier.txt | perl -ne 'print'
mais je ne vois pas la raison en ce cas ( cat fichier.txt ça suffit), c'est seulement pour montrer le passage avec |
En revanche si on veut transformer les caractères en majuscules et stocker le résultat dans un fichier on pourra écrirecat fichier.txt | perl -ne 'print uc' > fichier_maj.txt