Latest web development tutorials

output formattato Perl

Perl è un potente dati linguaggio di elaborazione del testo.

Perl può essere usato per definire un formato modello e quindi utilizzare l'uscita dati di scrittura del modello specificato.

formato Perl sintassi definita è la seguente:

format FormatName =
fieldline
value_one, value_two, value_three
fieldline
value_one, value_two
.

Parametri analitici:

  • FormatName: nome del formato.
  • Fieldline: un formato di riga, il formato utilizzato per definire una linea di uscita, simile al @, ^, <,>, | tali caratteri.
  • value_one, value_two ......: righe di dati, utilizzati per inserire i valori per il formato di fila, tutte le variabili perl.
  • : Simbolo Fine.

Il seguente è un semplice esempio è formattato:

#!/usr/bin/perl

$text = "google w3big taobao";
format STDOUT =
first: ^<<<<<  # 左边对齐,字符长度为6
    $text
second: ^<<<<< # 左边对齐,字符长度为6
    $text
third: ^<<<< # 左边对齐,字符长度为5,taobao 最后一个 o 被截断
    $text  
.
write

Eseguire l'uscita precedente esempio è il seguente:

first: google
second: w3big
third: taoba

fila Format (riga grafica) sintassi

  • linee Format @ o ^ all'inizio, queste linee non subiscono alcuna forma di sostituzione di variabile.
  • @ Campo (da non confondere con l'array marcatore @) è un campo normale.
  • @, <,>, ^ Dopo l'| lunghezza determina la lunghezza del campo se la variabile supera la lunghezza definita, verrà troncato.
  • <,>, | Anche rappresentare, allineato a sinistra, allineato a destra, allineato al centro.
  • ^ I campi per il multi-linea di riempimento blocco di testo.

Gamma Format

Gamma di formati, come segue:

formato significato campo
@ <<< uscita a sinistra
@ >>> uscita allineato a destra
@ ||| allineare uscita
@ ## ##. numero di precisione fissa
@ * Più righe di testo

Il primo carattere di ogni riga è una gamma di carattere di riempimento quando si usa il carattere @, non la formattazione del testo.

Nella tabella di cui sopra, oltre a più righe @ gamma *, a grande campo sono uguali a un numero specificato di caratteri nel carattere @, tra cui, ad esempio:

@###.##

Esso rappresenta larga sette caratteri, dopo quattro prima della virgola, il punto decimale due.

Esempi sono i seguenti:

#!/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;
}

L'output sopra esempio è:

===================================
Ali                     20
  2000.00
===================================
===================================
w3big                  30
  2500.00
===================================
===================================
Jaffer                  40
  4000.00
===================================

formato variabile

  • $ ~ ($ FORMAT_NAME): Formato Nome $ ^ ($ FORMAT_TOP_NAME): Il nome del formato corrente è memorizzato nell'intestazione
  • $% ($ FORMAT_PAGE_NUMBER): il numero di pagina corrente di uscita
  • $ = ($ FORMAT_LINES_PER_PAGE): il numero di righe della pagina
  • $ | ($ FORMAT_AUTOFLUSH): se per irrigare automaticamente la memoria buffer di uscita
  • $ ^ L ($ FORMAT_FORMFEED): in ogni pagina (tranne la prima pagina) un colpo di testa richiesto prima che la stringa di output viene memorizzato in

Quanto segue è un semplice da usare $ esempio - Formato:

#!/usr/bin/perl

$~ = "MYFORMAT"; # 指定缺省文件变量下所使用的格式
write;           # 输出 $~ 所指定的格式

format MYFORMAT = # 定义格式 MYFORMAT 
=================================
      Text # 本教程
=================================
.
write; 

Eseguire l'uscita precedente esempio è il seguente:

=================================
      Text # 本教程
=================================
=================================
      Text # 本教程
=================================

Se non si specifica il $ ~ sotto il caso, il formato di output chiamato STDOUT:

#!/usr/bin/perl

write;         # 不指定$~的情况下会寻找名为STDOUT的格式

format STDOUT =
~用~号指定的文字不会被输出
----------------
  STDOUT格式
----------------
.

Eseguire l'uscita precedente esempio è il seguente:

----------------
  STDOUT格式
----------------

Il seguente esempio si aggiunge una informazioni di intestazione rapporto per dimostrare le variabili $ ^ o $ FORMAT_TOP_NAME:

#!/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;
}

L'output sopra esempio è:

===================================
Name                    Age
===================================
===================================
Ali                     20
  2000.00
===================================
===================================
w3big                  30
  2500.00
===================================
===================================
Jaffer                  40
  4000.00
===================================

Possiamo anche utilizzare il $% o $ FORMAT_PAGE_NUMBER set impaginazione per il report:

#!/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;
}

L'output sopra esempio è:

===================================
Name                    Age Page 1
===================================
===================================
Ali                     20
  2000.00
===================================
===================================
w3big                  30
  2500.00
===================================
===================================
Jaffer                  40
  4000.00
===================================

Uscita per altro file

Per impostazione predefinita, la funzione scriverà i risultati al STDOUT file di standard output, possiamo anche farlo emette il risultato di qualsiasi altro file. Il modo più semplice è quello di file variabile come parametro per scrivere, ad esempio:

write(MYFILE);

Scrivere il codice qui sopra per utilizzare l'uscita formato di stampa predefinito in un file chiamato MIOFILE MIOFILE in.

Ma questo non può essere usato per cambiare il formato di stampa utilizzato dalla variabile $ ~. Le variabili di sistema $ ~ variabile funziona solo per il file di default, possiamo cambiare la variabile file predefinito $ ~ modifiche, quindi chiamare scrittura.

#!/usr/bin/perl

if (open(MYFILE, ">tmp")) {
$~ = "MYFORMAT";
write MYFILE; # 含文件变量的输出,此时会打印与变量同名的格式,即MYFILE。$~里指定的值被忽略。

format MYFILE = # 与文件变量同名 
=================================
      输入到文件中
=================================
.
close MYFILE;
}

Dopo l'implementazione di successo, siamo in grado di visualizzare il contenuto del file di tmp, come segue:

$ cat tmp 
=================================
      输入到文件中
=================================

Possiamo usare la selezione per modificare la variabile file predefinito, che restituisce la variabile interna corrente indica che il file di default, in modo da poter creare un sottoprogramma, secondo la loro propria uscita idee, senza influenzare il resto del programma.

#!/usr/bin/perl

if (open(MYFILE, ">>tmp")) {
select (MYFILE); # 使得默认文件变量的打印输出到MYFILE中
$~ = "OTHER";
write;           # 默认文件变量,打印到select指定的文件中,必使用$~指定的格式 OTHER

format OTHER =
=================================
  使用定义的格式输入到文件中
=================================
. 
close MYFILE;
}

Dopo l'implementazione di successo, siamo in grado di visualizzare il contenuto del file di tmp, come segue:

$ cat tmp 
=================================
      输入到文件中
=================================
=================================
  使用定义的格式输入到文件中
=================================