Verwenden printf
für formatierte Druck. Die Details der Formatspezifizierer sind in sprintf
angegeben.
printf("%d\t%d\t%d\t%10.8f\n", $num, $start, $stop, $exp/$percent);
Die Zeichenfolge innerhalb "..."
ist, wo Sie angeben, wie formatiert wird. Der Rest ist eine Liste von Variablen, die in der Zeichenfolge für jeden Spezifizierer %
verwendet werden, im Allgemeinen in der Reihenfolge, in der sie kommen. Die sprintf
gibt eine Zeichenfolge zurück, während printf
auf STDOUT
oder zu einem anderen Dateihandle druckt, wenn es als das erste Argument printf($fh "...", @vars)
angegeben wird. Dies ist eines der ehrwürdigsten, guten alten Werkzeuge.
Above haben wir: eine ganze Zahl %d
, dann eine Lasche \t
, dann werden die gleichen zwei mal mehr, dann eine Gleitkommazahl im Bereich der Gesamtbreite gedruckt werden 10
(einschließlich des Dezimalpunktes und ein mögliches Zeichen) mit 8
Ziffern nach dem Punkt. Die Ganzzahlen nehmen so viel Platz in der Ausgabe auf, wie sie benötigen - eine für 1
, drei für 239
. Wenn Sie die Ausgabe in einer Reihe aufstellen möchten, können Sie die minimale Breite des Feldes angeben
printf("%3d\t%3d\t%3d\t%10.8f\n", $num, $start, $stop, $exp/$percent);
Jetzt jede ganze Zahl drei Räume nehmen, auf der rechten Seite ausgerichtet ist. Zum Ausrichten auf der linken Seite verwenden Sie %-3d
. Um führende Nullen zu haben, würden Sie sagen %03d
, für 001
. Strings können auch in fester Breite Felder gedruckt werden, so
printf("%4s %6s %6s %12s\n", qw(num start stop factor));
printf("%4d %6d %6d %12.8f\n", $num, $start, $stop, $exp/$percent);
druckt
num start stop factor
1 29 239 0.00008692
Oben I Feldbreiten für einen komfortablen Layout gewählt und verwendet wörtliche Räume als Trennzeichen zwischen ihnen. (Registerkarten können sich mit visueller Ausrichtung anlegen, wenn Einträge nicht in Tabstopps passen. Was sich auf zukünftiges Parsen auswirkt, wenn dies in eine Datendatei geht, obwohl sie kein Zucker für die Analyse sind.) Wenn Sie stattdessen Kommas verwenden erstellt eine CSV-Datei.
Es gibt weit, viel mehr, was man damit tun kann. Es wird für alles verwendet, von präzisen Formatkonvertierungen bis hin zum Drucken von Datendateien oder anständigen (ASCII-) Berichten. Die sprintf
Seite wird mit vielen Beispielen ausführlich beschrieben.
Werfen Sie einen Blick auf [sprintf] (http://perldoc.perl.org/functions/sprintf.html). –