Perl sformatowane wyjście
Perl jest bardzo potężnym językiem przetwarzania danych tekstowych.
Perl może być używana do definiowania formatu szablonu, a następnie użyć wyjścia zapisu danych przez określony szablon.
Format Perl zdefiniowana składnia jest następująca:
format FormatName = fieldline value_one, value_two, value_three fieldline value_one, value_two .
Parametry analityczne:
- FormatName: nazwa formatu.
- Fieldline: format wiersza, format używany do określenia linii wyjściowej, podobny do @, ^, <,>, | takie znaki.
- value_one, value_two ......: wiersze danych, wykorzystywane do wstawienia wartości do przodu formacie rzędu, wszystkie zmienne Perl.
- Symbol: Koniec.
Poniżej znajduje się prosty przypadek jest sformatowany:
#!/usr/bin/perl $text = "google w3big taobao"; format STDOUT = first: ^<<<<< # 左边对齐,字符长度为6 $text second: ^<<<<< # 左边对齐,字符长度为6 $text third: ^<<<< # 左边对齐,字符长度为5,taobao 最后一个 o 被截断 $text . write
Wykonać wyjście Powyższy przykład to:
first: google second: w3big third: taoba
Format Składnia wiersza (wiersz graficznym)
- linie formatu @ lub ^ na początku, linie te nie są poddawane żadnej formy podstawiania zmiennych.
- @ Field (nie mylić z tablicy markerem @) jest zwykłym polu.
- @ <,> ^ Po | długość określa długość pola, jeśli zmienna przekracza określoną długość, będzie obcięta.
- <,>, | Reprezentują także wyrównany do lewej, prawej wyrównane, centrum wyrównane.
- ^ Pola dla wielu linii bloku tekstu nadzienia.
Format Zakres
Zakres formatach, jak następuje:
format | zakres Znaczenie |
---|---|
@ <<< | Lewa wyjście |
@ >>> | Wyjście z wyrównaniem do prawej |
@ ||| | Wyrównywanie wyjścia |
@ ##. ## | Stała liczba precyzji |
@ * | Wiele wierszy tekstu |
Pierwszy znak każdego wiersza jest zakres charakterze wypełniacza przy zastosowaniu znaku @, a nie formatowanie tekstu.
W powyższej tabeli, oprócz multi-line @ *, zakres szerokokątny są równe określonej liczby znaków w postaci @, w tym na przykład:
@###.##
Reprezentuje ona szerokie siedem znaków, po czterech przed kropką dziesiętną, przecinek dwa.
Przykłady są następujące:
#!/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; }
Powyższy przykład wyjście jest:
=================================== Ali 20 2000.00 =================================== =================================== w3big 30 2500.00 =================================== =================================== Jaffer 40 4000.00 ===================================
Format zmienna
- ~ $ ($ FORMAT_NAME): Nazwa formatu $ ^ ($ FORMAT_TOP_NAME): Obecna nazwa formatu jest przechowywany w nagłówku
- $% ($ FORMAT_PAGE_NUMBER): bieżący numer strony wyjścia
- $ = ($ FORMAT_LINES_PER_PAGE): liczba wierszy na stronie
- $ | ($ FORMAT_AUTOFLUSH): czy automatycznie opróżnić pamięć bufora wyjściowego
- $ ^ L ($ FORMAT_FORMFEED): na każdej stronie (z wyjątkiem pierwszej stronie) header wymagana przed łańcuch wyjściowy jest przechowywany w
Poniżej znajduje się prosty w obsłudze $ instancji - format:
#!/usr/bin/perl $~ = "MYFORMAT"; # 指定缺省文件变量下所使用的格式 write; # 输出 $~ 所指定的格式 format MYFORMAT = # 定义格式 MYFORMAT ================================= Text # 本教程 ================================= . write;
Wykonać wyjście Powyższy przykład to:
================================= Text # 本教程 ================================= ================================= Text # 本教程 =================================
Jeśli nie określić $ ~ pod przypadku format zwany STDOUT:
#!/usr/bin/perl write; # 不指定$~的情况下会寻找名为STDOUT的格式 format STDOUT = ~用~号指定的文字不会被输出 ---------------- STDOUT格式 ---------------- .
Wykonać wyjście Powyższy przykład to:
---------------- STDOUT格式 ----------------
W poniższym przykładzie dodamy informacje nagłówka raportu wykazanie $ ^ $ FORMAT_TOP_NAME lub zmienne:
#!/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; }
Powyższy przykład wyjście jest:
=================================== Name Age =================================== =================================== Ali 20 2000.00 =================================== =================================== w3big 30 2500.00 =================================== =================================== Jaffer 40 4000.00 ===================================
Możemy również użyć $% $ FORMAT_PAGE_NUMBER lub zestaw paginacji zgłoszenia:
#!/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; }
Powyższy przykład wyjście jest:
=================================== Name Age Page 1 =================================== =================================== Ali 20 2000.00 =================================== =================================== w3big 30 2500.00 =================================== =================================== Jaffer 40 4000.00 ===================================
Wyjście do innego pliku
Domyślnie funkcja będzie zapisywać wyniki do standardowego pliku wyjściowego STDOUT, możemy również zrobić to wysyła wynik do innego pliku. Najłatwiej jest złożyć zmienną jako parametr do pisania, takich jak:
write(MYFILE);
Wpisz powyższy kod, aby użyć wyjścia domyślny format wydruku do pliku o nazwie MOJPLIK MOJPLIK się.
Ale to nie może być użyty do zmiany formatu wydruku używane przez zmienną $ ~. Zmienne systemowe $ ~ zmienna działa tylko dla domyślnego pliku, możemy zmienić domyślny plik zmiennej $ ~ zmiany, a następnie zadzwonić do zapisu.
#!/usr/bin/perl if (open(MYFILE, ">tmp")) { $~ = "MYFORMAT"; write MYFILE; # 含文件变量的输出,此时会打印与变量同名的格式,即MYFILE。$~里指定的值被忽略。 format MYFILE = # 与文件变量同名 ================================= 输入到文件中 ================================= . close MYFILE; }
Po udanej realizacji, możemy przeglądać zawartość pliku tmp, co następuje:
$ cat tmp ================================= 输入到文件中 =================================
Możemy użyć select aby zmienić domyślny plik zmienną, która zwraca bieżącą zmiennej wewnętrznej wskazuje plik domyślny, dzięki czemu możemy stworzyć podprogram, w zależności od ich własnej produkcji pomysły, bez wpływu na resztę programu.
#!/usr/bin/perl if (open(MYFILE, ">>tmp")) { select (MYFILE); # 使得默认文件变量的打印输出到MYFILE中 $~ = "OTHER"; write; # 默认文件变量,打印到select指定的文件中,必使用$~指定的格式 OTHER format OTHER = ================================= 使用定义的格式输入到文件中 ================================= . close MYFILE; }
Po udanej realizacji, możemy przeglądać zawartość pliku tmp, co następuje:
$ cat tmp ================================= 输入到文件中 ================================= ================================= 使用定义的格式输入到文件中 =================================