Tipps und Tricks zu Perl und CPAN-Modulen

Tabellen mit Text::ASCIITable

Beitrag von Uwe am 23.11.2008 um 20:10 Uhr | 0 Kommentare

Bei "Tabellen" denkt man meist an HTML. Aber mit den ASCII-Zeichen lassen sich auch schöne Tabellen im Textmodus erstellen. Das Modul Text::ASCIITable hilft dabei:

 1  #!/usr/bin/perl
 2  
 3  use strict;
 4  use warnings;
 5  
 6  use Text::ASCIITable;
 7  
 8  my $table = Text::ASCIITable->new
 9      ({headingText => 'Regentage pro Jahr'});
10  
11  # Spalten-Ueberschriften und -Ausrichtungen
12  $table->setCols('Jahr', 'Tage', 'Bemerkung');
13  $table->alignCol(Tage => 'right');
14  $table->setColWidth(Bemerkung => 45);
15  
16  # Daten eintragen
17  $table->addRow(2008, 5,
18    'Ein super Jahr - fast schon zu trocken.');
19  $table->addRow(2007, 20,
20    'Sehr schoenes Wetter, nur wenig Regentage.');
21  $table->addRow(2006, 65,
22    'Jede Woche ein Regentag, und noch mehr Text,'.
23    ' damit ein Umbruch stattfindet.');
24  $table->addRowLine;
25  $table->addRow('', 30, 'Durchschnitt');
26  
27  print $table;

Download: text-asciitable.pl

Zunächst werden die Überschriften festgelegt (Zeile 12, "setCols"). Die Ausrichtung funktioniert standardmäßig wie folgt: Text wird links und Zahlen werden rechts ausgerichtet. Für unser Beispiel wäre Zeile 13 demnach nicht notwendig. Mit "setColWidth" wird die Breite der Spalte "Bemerkung" begrenzt. Bei Bedarf wird der Text nun auf mehrere Zeilen aufgespalten.

Die Ausgabe sieht dann so aus:

.------------------------------------------------------------.
|                     Regentage pro Jahr                     |
+------+------+----------------------------------------------+
| Jahr | Tage | Bemerkung                                    |
+------+------+----------------------------------------------+
| 2008 |    5 | Ein super Jahr - fast schon zu trocken.      |
| 2007 |   20 | Sehr schoenes Wetter, nur wenig Regentage.   |
| 2006 |   65 | Jede Woche ein Regentag, und noch mehr Text, |
|      |      | damit ein Umbruch stattfindet.               |
+------+------+----------------------------------------------+
|      |   30 | Durchschnitt                                 |
'------+------+----------------------------------------------'

Der Text für das Jahr 2006 wird dabei wie erwartet aufgespalten. Die tatsächliche Breite dieser Spalte ist nur so groß, wie nötig. In diesem Fall 44 statt maximal möglicher 45 Zeichen.


Kommentar abgeben