[Perl] Recevoir les infos passees via un pipe
NaeiKinDus
-
blux Messages postés 27885 Date d'inscription Statut Modérateur Dernière intervention -
blux Messages postés 27885 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 :)
A voir également:
- [Perl] Recevoir les infos passees via un pipe
- Votre correspondant n'est pas autorisé à recevoir vos appels - Forum Mobile
- 952 n'a pu recevoir votre message ✓ - Forum SFR
- Via michelin carte - Télécharger - Transports & Cartes
- La zone de données passée à un appel système est insuffisante - Windows 11
- V/correspondant n'est pas autorisé à recevoir - Forum Mobile
4 réponses
Salut,
cat toto | test1.pl
Ca marche bien chez moi... (AIX 5.2)
#!/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!
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 |
En revanche si on veut transformer les caractères en majuscules et stocker le résultat dans un fichier on pourra écrire
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 écrire
cat fichier.txt | perl -ne 'print uc' > fichier_maj.txt