Comment faire pour capturer l'entrée standard en Perl

Un des slogans de Perl est TIMTOWTDI (prononcé "de toady tim"). Il est un acronyme qui signifie «il y a plus d'une façon de le faire." Comme tout le reste en Perl, il y a beaucoup de façons de capturer l'entrée standard. Parmi eux est un raccourci pour lire toutes les lignes dans un fichier et faire quelque chose avec eux individuellement. Puisque c'est une action commune dans les programmes de filtrage comme Unix, il est très souvent utilisé dans les programmes Perl.

Instructions

1 Utilisez l'opérateur "angle". Perl a quatre filehandles ouverts par défaut: STDIN, STDOUT, STDERR et DATA, dont STDIN est la poignée d'entrée standard, utilisé pour capturer l'entrée standard.

2 Utiliser l'opérateur d'angle pour lire une seule ligne du filehandle qui lui est passé, et soit magasin dans le $ _ Variable par défaut ou l'utiliser comme côté droit d'une expression d'affectation. L'opérateur "angle" est un descripteur de fichier entouré de moins et de plus de symboles, aussi appelé "crochets."
"$a = ;" "$a = ;"

3 Utilisez l'opérateur d'angle dans une boucle while. L'opérateur équerre doit être la seule chose dans l'expression booléenne de la boucle while lorsque vous utilisez les crochets dans une boucle while. Chaque fois que la boucle while est exécuté, il va lire une ligne et l' affecter à

l'opérateur $. Quand il n'y a plus de lignes à lire, la boucle while se termine:
"while( ) {
chomp; # Chomp the $
"while( ) {
chomp; # Chomp the $
"while( ) {
chomp; # Chomp the $
variables
impression; # Imprimer la variable $ _
} "

4 Attribuer l'opérateur d'angle à une liste. Affectation des résultats de l'angle opérateur à une liste est comme dire "stocker toutes les lignes de ce descripteur de fichier à cette liste." Lorsque vous affectez l'opérateur d'angle à une liste, un autre raccourci est effectuée qui affecte toutes les lignes d'entrée à la liste:
"@my_list = ;" "@my_list = ;"

5 Lire à partir du descripteur de fichier STDIN en utilisant la fonction de lecture. Le support d'angle ne lit que des lignes complètes, et que cela pourrait ne pas être ce que vous voulez faire, la fonction de lecture vous permettra de lire toute quantité d'octets dans une variable. Il faut trois paramètres: le descripteur de fichier, la variable pour stocker et le nombre d'octets à lire. L'exemple suivant lit 10 octets dans un tampon de $:
"read(STDIN,$buffer,10);"

Conseils et avertissements

  • Affecter l'angle opérateur à une liste et en utilisant l'opérateur d'angle dans une boucle while sont souvent appelés «syntaxe magique», car il est parfois pas évident de savoir ce qu'ils font, mais ils font des actions très courantes facile.