Listen in Tabellenform darstellen
Volker
- perl
0 Jörk Behrends0 Volker0 Jörk Behrends0 Volker
Hallo,
kennt jemand eine Möglichkeit in Perl eine Liste @list (Name, Adresse, Telefon) möglichst einfach in einer Tabelle auszugeben, die eine feste Breite hat z.B. DinA4 und wenn der Name/ die Strasse zu lang für die Zeile ist, daß automatisch eine neue Zeile geschrieben wird mit dem Rest des Namens / der Strasse.
Herzlichen Dank.
Beste Grüße
Volker
Format:
Name Strasse Telefon
Beispiel1 Strasse1 287349827498
Beispiel2 dasisteinganzlange 46546546
rStrassenname
Beispiel3 Strasse3 2847349827498
Hallo,
kennt jemand eine Möglichkeit in Perl eine Liste @list (Name, Adresse, Telefon) möglichst einfach in einer Tabelle auszugeben, die eine feste Breite hat z.B. DinA4 und wenn der Name/ die Strasse zu lang für die Zeile ist, daß automatisch eine neue Zeile geschrieben wird mit dem Rest des Namens / der Strasse.
Das ganze geht mit Formaten (siehe 'perldoc perlform'):
format STDOUT =
^<<<<<<<<<<<<< ^<<<<<<<<<<<<< ^<<<<<<<<<<<<<
$name, $strasse, $telefon
.
($name, $strasse, $telefon) = qw(Name Strasse Telefon);
write;
Gruß,
Jörk
Danke für die Hilfe, ist sehr nützlich, für die Spaltendarstellung. Gibt es ähnliches für "neue Zeile wenn länger als Formatlänge". Mit Deiner Funktion schneidet er mir einfach den Strassennamen der zu lang ist ab. Ich brauche eine Funktion, die mir dann automatisch eine neue Zeile generiert. Gibt es das? Ansonsten mach ich es eben "per Hand".
Gruß,
Volker
Hallo Volker,
Danke für die Hilfe, ist sehr nützlich, für die Spaltendarstellung. Gibt es ähnliches für "neue Zeile wenn länger als Formatlänge". Mit Deiner Funktion schneidet er mir einfach den Strassennamen der zu lang ist ab. Ich brauche eine Funktion, die mir dann automatisch eine neue Zeile generiert. Gibt es das? Ansonsten mach ich es eben "per Hand".
Uups, das hätte eigenlich die Lösung sein sollen ...
Also noch einmal zum rekapitulieren:
Die verwendeten <<< sagen, daß der Text linksbündig gesetzt werden soll ( für zentriert und >>> für rechtsbündig).
Das ^ am Anfang bewirkt, daß die Felder soweit wie möglich gefüllt werden. Der eingesetzte Text wird aus der Variablen herausgeschnitten. (Ein @ anstelle eines ^ würde für ein normales Textfeld stehen).
Nun zu meinem Fehler:
Jetzt muß man entweder write so oft aufrufen, bis alle Variablen geleert sind (per if oder while). Oder wenn man von einer maximalen Länge ausgeht, verlängert man das Format:
format STDOUT =
^<<<<<<<<<<<<< ^<<<<<<<<<<<<< ^<<<<<<<<<<<<<
$name, $strasse, $telefon
^<<<<<<<<<<<<< ^<<<<<<<<<<<<< ^<<<<<<<<<<<<<
$name, $strasse, $telefon
^<<<<<<<<<<<<< ^<<<<<<<<<<<<< ^<<<<<<<<<<<<<
$name, $strasse, $telefon
.
Um hierdurch entstehende Leerzeilen zu vermeiden kann man ein ~ in die Formatzeilen setzen. Dieses wird durch ein Leerzeichen ersetzt. ~ bewirkt, daß die Zeile nur ausgegeben wird, wenn sie nicht leer ist:
format STDOUT =
^<<<<<<<<<<<<< ^<<<<<<<<<<<<< ^<<<<<<<<<<<<<
$name, $strasse, $telefon
^<<<<<<<<<<<<< ^<<<<<<<<<<<<<~^<<<<<<<<<<<<<
$name, $strasse, $telefon
^<<<<<<<<<<<<< ^<<<<<<<<<<<<<~^<<<<<<<<<<<<<
$name, $strasse, $telefon
.
Nachtürlich gibt es auch hier eine kürzere Methode:
~~ besagt, daß die entsprechende Zeile sooft auszugeben ist, bis sie eine Leerzeile ist. voila:
format STDOUT =
^<<<<<<<<<<<<< ^<<<<<<<<<<<<< ^<<<<<<<<<<<<<~~
$name, $strasse, $telefon
.
Gruß,
Jörk
Hoffentlich habe ich diesesmal nicht wieder was übersehen ...
Hoffentlich habe ich diesesmal nicht wieder was übersehen ...
Danke für Deine Mühe, bis jetzt habe ich noch nicht alles ausprobiert, komme wahrscheinlich erst morgen dazu. Aber im voraus einfach mal: vielen Dank.
Beste Grüße
Volker