Latest web development tutorials

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 
=================================
      输入到文件中
=================================
=================================
  使用定义的格式输入到文件中
=================================