Gewusst wie: Erfassen der Standardeingabe in Perl

June 25

Perls Leitsätze gehört TIMTOWTDI (ausgesprochen "Tim Schleimer"). Es ist ein Akronym für "Es gibt mehr als einen Weg, es zu tun." Genau wie alles andere in Perl gibt es viele Möglichkeiten, standard-Eingabe zu erfassen. Unter ihnen ist eine Abkürzung für alle Zeilen in einer Datei zu lesen und etwas mit ihnen individuell. Da es sich um eine gemeinsame Aktion in Unix-Filter-ähnlichen Programmen, ist es sehr oft in Perl-Programmen verwendet.

Anweisungen

1 Verwenden Sie den Operator "Winkel". Perl hat vier Filehandles standardmäßig geöffnet: STDIN, STDOUT, STDERR und Daten, deren STDIN die Standardeingabehandle ist, verwendet, um standard-Eingabe zu erfassen.

2 Nutzen Sie den Winkel-Operator, um eine einzelne Zeile zu lesen aus der Filehandle kam zu ihm und entweder in die Standard-Variable $_ speichern oder als rechts von einem Zuweisungsausdruck verwenden. Der "Winkel"-Operator ist ein Filehandle umgeben von weniger als und größer als Symbole, auch bezeichnet als "Winkelklammern." "$a = ;"

3 Verwenden Sie den Winkel-Operator in einer While Schleife. Der Winkel-Operator sollte das einzige in der While Schleife boolescher Ausdruck bei der Verwendung von spitzen Klammern in einer While Schleife. Jedes Mal die While-Schleife ausgeführt wird, es werde eine Zeile gelesen und weisen Sie es dem $ Operator. Es existieren keine weiteren Zeilen zu lesen, die While-Schleife wird beendet: "while() { chomp; # Chomp the $variable print; # Print the $_ variable }"

4 Eine Liste den Winkel-Operator zuweisen. Eine Liste der Ergebnisse des Operators Winkel zuweisen, ist wie gesagt "alle Linien von diesem Filehandle zu dieser Liste speichern." Wenn Sie eine Liste den Winkel-Operator zuweisen, wird ein anderes Kontextmenü durchgeführt, die alle Zeilen der Eingabe zur Liste zuweist: "@my_list = ;"

5 Lesen Sie von den STDIN Filehandle mit der Lese-Funktion. Die Spitze Klammer liest nur komplette Linien und da dies möglicherweise nicht was Sie tun wollen, lesen Sie Funktion wird Ihnen jede Menge von Bytes in eine Variable zu lesen. Es hat drei Parameter: die Filehandle, die Variable in zu speichern und die Anzahl der zu lesenden Bytes. Das folgende Beispiel liest 10 Bytes in $buffer: "read(STDIN,$buffer,10);"

Tipps & Warnungen

  • Eine Liste den Winkel-Operator zuweisen und mithilfe des Operators Winkel in einer While Schleife werden oft genannt "magic-Syntax", da es manchmal nicht offensichtlich ist, was sie tun, aber sie machen sehr häufige Aktionen einfach.