Perl formatierte Ausgabe
Perl ist eine sehr leistungsfähige Textverarbeitung Sprachdaten.
Perl kann verwendet werden, um ein Vorlagenformat zu definieren, und dann durch die angegebenen Vorlage den Schreibdatenausgabe verwendet werden.
Perl-Format definiert Syntax lautet wie folgt:
format FormatName = fieldline value_one, value_two, value_three fieldline value_one, value_two .
Analytische Parameter:
- Formatname : Formatname.
- Fieldline: ein Zeilenformat, das Format verwendet , um eine Ausgangsleitung, ähnlich dem @ zu definieren, ^, <,>, | solche Zeichen.
- value_one, value_two ......: Reihen von Daten, verwendet , um Werte in die erste Reihe Format einfügen, werden alle Perl - Variablen.
- : End - Symbol.
Im Folgenden wird ein einfaches Beispiel formatiert:
#!/usr/bin/perl $text = "google w3big taobao"; format STDOUT = first: ^<<<<< # 左边对齐,字符长度为6 $text second: ^<<<<< # 左边对齐,字符长度为6 $text third: ^<<<< # 左边对齐,字符长度为5,taobao 最后一个 o 被截断 $text . write
Führen Sie das obige Beispiel Ausgabe lautet:
first: google second: w3big third: taoba
Format Zeile (Zeile grafisch) Syntax
- Format Linien @ oder ^ am Anfang, diese Linien durchlaufen keine Form von Variablensubstitution.
- @ Field (nicht mit dem Array Marker @ verwechseln) ist ein gewöhnlicher Feld.
- @, <,>, ^ Nachdem die | Länge die Länge des Feldes bestimmt, ob die Variable, die die angegebene Länge überschreitet, wird es abgeschnitten.
- <,>, | Auch repräsentieren, linksbündig, rechtsbündig, zentriert.
- ^ Felder für Textblock Füllung mit mehreren Leitungen.
Format Bereich
Reihe von Formaten, wie folgt:
Format | Bereich Bedeutung |
---|---|
@ <<< | Linker Ausgang |
@ >>> | Rechtsbündige Ausgabe |
@ ||| | Richten Sie Ausgang |
@ ##. ## | Feste Präzision Nummer |
@ * | Mehrere Textzeilen |
Das erste Zeichen jeder Zeile ist eine Reihe von Füllzeichen, wenn das Zeichen @ verwenden, nicht die Textformatierung.
In der obigen Tabelle, zusätzlich zu @ * Bereich Multi-line, Weitfeld gleich einer bestimmten Anzahl von Zeichen in dem Zeichen @, darunter zum Beispiel:
@###.##
Es stellt sieben Zeichen breit, nach vier vor dem Komma, das Komma zwei.
Beispiele sind wie folgt:
#!/usr/bin/perl format EMPLOYEE = =================================== @<<<<<<<<<<<<<<<<<<<<<< @<< $name $age @#####.## $salary =================================== . select(STDOUT); $~ = EMPLOYEE; @n = ("Ali", "w3big", "Jaffer"); @a = (20,30, 40); @s = (2000.00, 2500.00, 4000.000); $i = 0; foreach (@n){ $name = $_; $age = $a[$i]; $salary = $s[$i++]; write; }
Das obige Beispiel Ausgabe lautet:
=================================== Ali 20 2000.00 =================================== =================================== w3big 30 2500.00 =================================== =================================== Jaffer 40 4000.00 ===================================
Variable Format
- $ ~ ($ Format_name): Format Name $ ^ ($ FORMAT_TOP_NAME): Die aktuelle Formatnamen im Header gespeichert wird
- $% ($ FORMAT_PAGE_NUMBER): die aktuelle Ausgabe Seitennummer
- $ = ($ FORMAT_LINES_PER_PAGE): die Anzahl der Zeilen auf der Seite
- $ | ($ FORMAT_AUTOFLUSH): ob automatisch die Ausgangspufferspeicher zu leeren
- $ ^ L ($ FORMAT_FORMFEED): auf jeder Seite (außer der ersten Seite) Kopf erforderlich, bevor die Ausgabe-String gespeichert ist in
Im Folgenden ist eine einfache $ Instanz zu verwenden, - Format:
#!/usr/bin/perl $~ = "MYFORMAT"; # 指定缺省文件变量下所使用的格式 write; # 输出 $~ 所指定的格式 format MYFORMAT = # 定义格式 MYFORMAT ================================= Text # 本教程 ================================= . write;
Führen Sie das obige Beispiel Ausgabe lautet:
================================= Text # 本教程 ================================= ================================= Text # 本教程 =================================
Wenn Sie nicht die $ ~ unter dem Fall angeben, wird das Ausgabeformat STDOUT genannt:
#!/usr/bin/perl write; # 不指定$~的情况下会寻找名为STDOUT的格式 format STDOUT = ~用~号指定的文字不会被输出 ---------------- STDOUT格式 ---------------- .
Führen Sie das obige Beispiel Ausgabe lautet:
---------------- STDOUT格式 ----------------
Das folgende Beispiel wir einen Bericht Header-Informationen hinzufügen, die $ ^ oder $ FORMAT_TOP_NAME Variablen zu demonstrieren:
#!/usr/bin/perl format EMPLOYEE = =================================== @<<<<<<<<<<<<<<<<<<<<<< @<< $name $age @#####.## $salary =================================== . format EMPLOYEE_TOP = =================================== Name Age =================================== . select(STDOUT); $~ = EMPLOYEE; $^ = EMPLOYEE_TOP; @n = ("Ali", "w3big", "Jaffer"); @a = (20,30, 40); @s = (2000.00, 2500.00, 4000.000); $i = 0; foreach (@n){ $name = $_; $age = $a[$i]; $salary = $s[$i++]; write; }
Das obige Beispiel Ausgabe lautet:
=================================== Name Age =================================== =================================== Ali 20 2000.00 =================================== =================================== w3big 30 2500.00 =================================== =================================== Jaffer 40 4000.00 ===================================
Wir können auch die $% oder $ FORMAT_PAGE_NUMBER Set Paginierung für den Bericht verwendet werden:
#!/usr/bin/perl format EMPLOYEE = =================================== @<<<<<<<<<<<<<<<<<<<<<< @<< $name $age @#####.## $salary =================================== . # 添加分页 $% format EMPLOYEE_TOP = =================================== Name Age Page @< $% =================================== . select(STDOUT); $~ = EMPLOYEE; $^ = EMPLOYEE_TOP; @n = ("Ali", "w3big", "Jaffer"); @a = (20,30, 40); @s = (2000.00, 2500.00, 4000.000); $i = 0; foreach (@n){ $name = $_; $age = $a[$i]; $salary = $s[$i++]; write; }
Das obige Beispiel Ausgabe lautet:
=================================== Name Age Page 1 =================================== =================================== Ali 20 2000.00 =================================== =================================== w3big 30 2500.00 =================================== =================================== Jaffer 40 4000.00 ===================================
Ausgabe in andere Datei
Standardmäßig wird die Funktion, die Ergebnisse auf die Standardausgabedatei STDOUT schreiben, können wir machen es auch um das Ergebnis zu jeder anderen Datei ausgibt. Der einfachste Weg ist, Variable-Datei als Parameter zu schreiben, wie zum Beispiel:
write(MYFILE);
Schreiben Sie den Code über den Standard-Druckformat Ausgabe in eine Datei MYFILE MYFILE genannt in zu verwenden.
Aber das kann nicht verwendet werden, um das Druckformat von $ ~ Variable zu ändern. Systemvariablen $ ~ Variable funktioniert nur für die Standard-Datei, können wir die Standard-Dateivariable $ ~ Änderungen ändern, dann schreiben Sie anrufen.
#!/usr/bin/perl if (open(MYFILE, ">tmp")) { $~ = "MYFORMAT"; write MYFILE; # 含文件变量的输出,此时会打印与变量同名的格式,即MYFILE。$~里指定的值被忽略。 format MYFILE = # 与文件变量同名 ================================= 输入到文件中 ================================= . close MYFILE; }
Nach der erfolgreichen Implementierung können wir den Inhalt von tmp-Datei anzuzeigen, wie folgt:
$ cat tmp ================================= 输入到文件中 =================================
Wir können die select verwenden, um die Standard-Dateivariable zu ändern, die der aktuelle interne Variable, die die Standard-Datei anzeigt, zurückgibt, so dass wir ein Unterprogramm erstellen können, nach ihren eigenen Ideen Ausgang, ohne den Rest des Programms zu beeinflussen.
#!/usr/bin/perl if (open(MYFILE, ">>tmp")) { select (MYFILE); # 使得默认文件变量的打印输出到MYFILE中 $~ = "OTHER"; write; # 默认文件变量,打印到select指定的文件中,必使用$~指定的格式 OTHER format OTHER = ================================= 使用定义的格式输入到文件中 ================================= . close MYFILE; }
Nach der erfolgreichen Implementierung können wir den Inhalt von tmp-Datei anzuzeigen, wie folgt:
$ cat tmp ================================= 输入到文件中 ================================= ================================= 使用定义的格式输入到文件中 =================================