Utilisation printf
pour l'impression en forme. Les détails des spécificateurs de format sont donnés en sprintf
.
printf("%d\t%d\t%d\t%10.8f\n", $num, $start, $stop, $exp/$percent);
La chaîne à l'intérieur de "..."
est l'endroit où vous spécifiez comment formater. Le reste est une liste de variables qui sont utilisées dans la chaîne pour chaque spécificateur %
, en général dans l'ordre où elles viennent. Le sprintf
renvoie une chaîne, tandis que printf
imprime à STDOUT
ou à un autre handle de fichier s'il est le premier argument, printf($fh "...", @vars)
. C'est l'un des plus vieux outils les plus vénérables.
-dessus on a: un nombre entier %d
, puis un onglet \t
, les mêmes deux fois de plus, puis un nombre à virgule flottante devant être imprimées dans le domaine de la largeur totale 10
(y compris le point décimal et un signe possible) avec 8
chiffres après le point. Les entiers prennent autant d'espace dans la sortie dont ils ont besoin - un pour 1
, trois pour 239
. Si vous voulez aligner la sortie, vous pouvez spécifier la largeur minimale du champ
printf("%3d\t%3d\t%3d\t%10.8f\n", $num, $start, $stop, $exp/$percent);
Maintenant, chaque entier prendra trois espaces, alignés à droite. Pour aligner sur la gauche, utilisez %-3d
. Pour avoir des zéros en tête, vous diriez %03d
, pour 001
. Les chaînes peuvent être imprimées dans les champs à largeur fixe, ainsi, si
printf("%4s %6s %6s %12s\n", qw(num start stop factor));
printf("%4d %6d %6d %12.8f\n", $num, $start, $stop, $exp/$percent);
impressions
num start stop factor
1 29 239 0.00008692
Au-dessus j'ai choisi largeurs de champ pour un aménagement intérieur confortable et utilisé des espaces littéraux comme séparateurs entre eux. (Les onglets peuvent perturber l'alignement visuel si les entrées ne rentrent pas dans les tabulations.Ce qui n'a aucun effet sur l'analyse ultérieure si cela va à un fichier de données, même si elles ne sont pas non plus utiles pour l'analyse.) fait un fichier CSV.
Il y a beaucoup, beaucoup plus qu'on peut faire avec ceci. Il est utilisé pour tout, depuis les conversions de format précises en passant par l'impression de fichiers de données ou de rapports ASCII (décents). La page sprintf
est détaillée avec beaucoup d'exemples.
Regardez [sprintf] (http://perldoc.perl.org/functions/sprintf.html). –