Perl permet d'écrire sur la sortie standard, appelée STDOUT
et de lire sur l'entrée standard (STDIN). Il s'agit de deux descripteurs
fournis par le système d'exploitation et permettant généralement
de lire l'entrée du clavier et d'envoyer des données à l'écran,
mais cela est déterminé par le système d'exploitation. En effet, Perl
est issu des systèmes UNIX, sur lesquels
les entrées-sorties sont considérés comme des fichiers.
De cette façon, sur un serveur Web permettant d'utiliser des scripts CGI,
l'entrée standard représente la requête HTTP, et la sortie standard la réponse HTTP.
Les données arrivant sur l'entrée standard (définie par le système
d'exploitation) sont disponibles sous l'environnement Perl par le descripteur <STDIN>. De cette façon,
il est possible de récupérer ligne par ligne le contenu de ce descripteur à
l'aide d'une variable prévue à cet effet et de l'opérateur d'affectation:
Ainsi pour récupérer une ligne de l'entrée standard il est possible
d'utiliser une instruction de la sorte:
$var = <STDIN>
Il est aussi possible d'utiliser une variable tableau dans laquelle on va concaténer
chacune des lignes:
@var = <STDIN>
De cette façon, grâce à une boucle, on peut arriver
à récupérer l'ensemble des lignes de l'entrée
standard. Lorsqu'il n'y a plus aucune ligne disponible dans l'entrée
standard, celle-ci retourne la valeur undef, qui signifie qu'aucune
valeur n'est définie, ainsi la boucle se termine. Voici un exemple de
boucle:
while ($var = <STDIN>) {
// instructions
}
Pour écrire sur la sortie standard il suffit d'utiliser la fonction print()
et de lui passer en arguments les chaînes de caractères à
envoyer sur le "périphérique" de sortie.
Par exemple:
$var = 'bonjour';
print ($var.' le monde');
Ces instructions ont pour effet d'envoyer la chaîne de caractères
"bonjour le monde" sur la sortie standard.
Ici l'opérateur de concaténation (".") a été utiliser
pour joindre les deux chaînes. Il est également possible d'utiliser les guillemets doubles
pour que la variable $var soit interpolée, c'est-à-dire remplacée par son contenu :
$var = 'bonjour';
print ("$var le monde");
Cette fonction peut aussi être utilisée selon une syntaxe radicalement
différente, faisant mieux apparaître le rôle de la sortie standard (STDOUT):
$var = 'bonjour';
print STDOUT $var;
En réalité étant donné que STDOUT est la sortie "standard",
c'est-à-dire par défaut, la manière la plus simple d'écrire ce
code est:
$var = 'bonjour';
print $var;
Il est aussi possible d'utiliser la fonction printf() issue du langage C
pour envoyer des informations à la sortie standard.
Perl fournit un troisième descripteur standard permettant d'envoyer autonatiquement
les erreurs vers une sortie définie par l'administrateur du système. Ce
descripteur se nomme STDERR. Il suffit, lors d'écriture de script, de rediriger
les messages d'erreurs vers ce descripteur...
|