Thread mysql query tabellarisch ausgeben
(3 answers)
Opened by thoss51 at 2012-09-30 17:54
Guten Tag,
ich habe ein Problem mit der Ausgabe von printf auf STDOUT. Ich habe ein Perl Skript geschrieben, das mit Daten aus einer MySQL Datenbank abfragt (DBI) und als Tabelle ausgibt. Dazu benutzt das Skript eine eigene Funktion, die die Breite der einzelnen Spalten ermittelt, daraus einen String für Printf erstellt und zusammen mit anderen Werten zurück gibt. Ein solcher String, in Abhängigkeit von dem jeweiligen Query sieht dann z.B. so aus: "%-6s | %-6s | %-7s | %-7s | %-16s | %-9s | %-21s | %-3s | %-5s | %-14s | %-13s | %-10s | %-32s | %-9s |\n" (linksbündige Ausgabe, Spaltenbreite des breitesten Spalteneintrags, Spaltentrenner " | " ) Er wird in der Variablen $wert gespeichert und dann folgendermaßen zum zeilenweisen Ausgeben der Abfragergebnisse verwendet: Code: (dl
)
1 my $anzahl; Jetzt zu meinem Problem: Es klappt alles ganz prima, solange in den einzelnen Zeilen keine Sonderzeichen (öäüß) vorkommen. Sobald diese vorkommen wird die Spaltenbreite in dieser Zeile verkürzt und zwar genau um soviel Stellen, wie der Eintrag Sonderzeichen enthält. Hätte ich ein Feld, das %-16s formatiert ist und hätte 2 Sonderzeichen darin, dann ist die Spalte in dieser Zeile nur noch 14 Zeichen breit. Hat jemand von Euch eine Idee, was ich machen kann um das zu ändern? So long Thomas Last edited: 2012-09-30 17:59:47 +0200 (CEST) |