Latest web development tutorials

Perl sortie formatée

Perl est une donnée très puissant langage de traitement de texte.

Perl peut être utilisé pour définir un format de modèle, puis utiliser la sortie de données d'écriture par le modèle spécifié.

syntaxe définie format perl est la suivante:

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

Paramètres analytiques:

  • FormatName: nom de format.
  • Fieldline: un format de ligne, le format utilisé pour définir une ligne de sortie, semblable à @, ^, <,>, | ces caractères.
  • value_one, value_two ......: lignes de données, utilisées pour insérer des valeurs au format de rang, toutes les variables perl.
  • : Symbole de fin.

Ce qui suit est une instance simple est formaté:

#!/usr/bin/perl

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

Effectuer l'exemple ci-dessus est sortie:

first: google
second: w3big
third: taoba

Format ligne (ligne graphique) syntaxe

  • lignes de format @ ou ^ au début, ces lignes ne subissent aucune forme de substitution variable.
  • @ Champ (à ne pas confondre avec le tableau marqueur @) est un champ ordinaire.
  • @, <,>, ^ Après la | longueur détermine la longueur du champ si la variable dépasse la longueur définie, elle sera tronquée.
  • <,>, | Représentent également, aligné à gauche, aligné à droite, centre aligné.
  • ^ Les champs pour le remplissage multi-ligne bloc de texte.

Gamme Format

Gamme de formats, comme suit:

format Range Signification
@ <<< sortie gauche
@ >>> sortie justifié à droite
@ ||| Aligner la sortie
@ ## ##. Numéro de précision fixe
@ * Plusieurs lignes de texte

Le premier caractère de chaque ligne est une gamme de caractère de remplissage lorsque vous utilisez le caractère @, pas la mise en forme de texte.

Dans le tableau ci-dessus, en plus de multi-ligne @ * plage, grand champ est égal à un nombre spécifié de caractères dans le caractère @, y compris, par exemple:

@###.##

Il représente sept caractères de large, au bout de quatre avant la virgule, le point virgule deux.

Des exemples sont les suivants:

#!/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'exemple ci-dessus sortie est:

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

Format variable

  • $ ~ ($ FORMAT_NAME): Format Nom $ ^ (FORMAT_TOP_NAME $): Le nom du format actuel est stocké dans l'en-tête
  • $% ($ FORMAT_PAGE_NUMBER): le numéro de la page de sortie
  • $ = ($ FORMAT_LINES_PER_PAGE): le nombre de lignes sur la page
  • $ | (FORMAT_AUTOFLUSH $): que ce soit pour vider automatiquement la mémoire tampon de sortie
  • $ ^ L (FORMAT_FORMFEED $): sur chaque page (sauf la première page) tête requise avant que la chaîne de sortie est stocké dans

Ce qui suit est un simple à utiliser $ instance - Format:

#!/usr/bin/perl

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

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

Effectuer l'exemple ci-dessus est sortie:

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

Si vous ne spécifiez pas le $ ~ dans le cas, le format de sortie appelé STDOUT:

#!/usr/bin/perl

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

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

Effectuer l'exemple ci-dessus est sortie:

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

L'exemple suivant, nous ajoutons un rapport d'information d'en-tête de démontrer les FORMAT_TOP_NAME $ ^ ou variables $:

#!/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'exemple ci-dessus sortie est:

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

Nous pouvons également utiliser le $% ou FORMAT_PAGE_NUMBER $ set pagination pour le rapport:

#!/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'exemple ci-dessus sortie est:

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

Sortie vers un autre fichier

Par défaut, la fonction va écrire les résultats au STDOUT du fichier de sortie standard, nous pouvons également rendre le résultat dans un autre fichier. Le plus simple est de déposer variable comme un paramètre à écrire, par exemple:

write(MYFILE);

Ecrire le code ci-dessus pour utiliser la sortie de format d'impression par défaut dans un fichier appelé MYFILE MYFILE dans.

Mais cela ne peut pas être utilisé pour modifier le format d'impression utilisé par variable $ ~. Variables système variable $ ~ ne fonctionne que pour le fichier par défaut, nous pouvons changer la variable $ fichier par défaut ~ modifications, puis appeler écriture.

#!/usr/bin/perl

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

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

Après la mise en œuvre réussie, nous pouvons voir le contenu du fichier tmp, comme suit:

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

Nous pouvons utiliser la sélection pour changer la variable de fichier par défaut, qui retourne la variable interne actuelle indique que le fichier par défaut, de sorte que nous pouvons créer un sous-programme, en fonction de leur propre production d'idées, sans affecter le reste du programme.

#!/usr/bin/perl

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

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

Après la mise en œuvre réussie, nous pouvons voir le contenu du fichier tmp, comme suit:

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