OT: Perl - formatierte Ausgabe auf STDOUT
![](https://seccdn.libravatar.org/avatar/6e1ef530cce22c6fca03a00e5fbe5288.jpg?s=120&d=mm&r=g)
Hallo Liste, etwas Offtopic, aber de.comp.lang.perl.misc ist im Gegensatz zu dieser Liste doch so unfreundlich :-) Hier findet sich schliesslich (fast) immer jemand, der einem mit Rat und Tat zur Seite steht. Ich habe hier folgendes Problem (ist wahrscheinlich für diemeisten von euch gar keines): Ich möchte mit einem Perl-Script Textdateien parsen und die Info, die ich benötige, auf dem Bildschrim ausgeben. Hier mal kur ein Beispiel: #!/usr/bin/perl -w use strict; my $passwd = '/etc/passwd'; open (PASSWD, $passwd) or die "Kann Datei $passwd nicht oeffnen: $!\n"; while (<PASSWD>) { (my $username, my $whatever, my $uid, my $gid, my $fullName, / my $home, my $shell) = split(/:/, $_); print "$username\t\t$fullName\t\t$home\n"; } Diese Ausgabe sieht allerdings ziemlich wuesst aus. Lieber hätte ich etwas in der Art: username | fullname | home-Directory ------------------------------------------------- username1 | fullname1 | home-Directory1 .. | . | . .. | . | . .. | . | . unserbanmen | fullnamen | home-Directoryn Wie formatiere ich die Ausgabe des Scripts, damit ich soetwas erhalte ? Danke Olaf
![](https://seccdn.libravatar.org/avatar/777bdd74a17749c5f76c862b8323e1fe.jpg?s=120&d=mm&r=g)
Hello Olaf, Tuesday, January 23, 2001, 2:08:44 PM, you wrote: OL> Wie formatiere ich die Ausgabe des Scripts, damit ich soetwas erhalte ? Vielleicht hilft dir sprintf weiter. ... $GesamtF = sprintf("%11.2f",$Gesamt); ... Das benutze ich manchmal für Formatierungen bei dyn. HTML-Seiten, die mit PERL generiert werden. Näheres: perldoc -f sprintf -- Best regards, Roland mailto:roland.suehsmuth@boecker-online.de
![](https://seccdn.libravatar.org/avatar/633b79060e151e276100d38ce8f733e2.jpg?s=120&d=mm&r=g)
Hi, On Tue, Jan 23 2001 at 14:08 +0100, Olaf Lange wrote:
Ich möchte mit einem Perl-Script Textdateien parsen und die Info, die ich benötige, auf dem Bildschrim ausgeben. Hier mal kur ein Beispiel: [...] Diese Ausgabe sieht allerdings ziemlich wuesst aus. Lieber hätte ich etwas in der Art:
username | fullname | home-Directory ------------------------------------------------- username1 | fullname1 | home-Directory1 .. | . | . .. | . | . .. | . | . unserbanmen | fullnamen | home-Directoryn
Wie formatiere ich die Ausgabe des Scripts, damit ich soetwas erhalte ?
Dafür kannst Du Perls Formate einsetzen. Zum Beispiel so: #!/usr/bin/perl -w open P, '/etc/passwd' or die; while (<P>) { ($user, $name, $home) = (split /:/)[0,4,6]; write; } print "+-------------+-----------------------------------+--------------------------+\n"; format STDOUT_TOP = +-------------+-----------------------------------+--------------------------+ | Username | Fullname | Home | +-------------+-----------------------------------+--------------------------+ . format STDOUT = | @<<<<<<<<<< | @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< | @<<<<<<<<<<<<<<<<<<<<<<< | $user, $name, $home . Ciao, Stefan -- Stefan Troeger o _ _ _ stefan@troeger.st __o __o /\_ _ \\o (_)\__/o (_) _`\<, _`\<, _>(_) (_)/<_ \_| \ _|/' \/ (_)/(_) (_)/(_) (_) (_) (_) (_)' _\o_
participants (4)
-
Bernd Brodesser
-
Olaf Lange
-
Roland Suehsmuth
-
Stefan Troeger