Leser: 1
![]() |
|< 1 2 3 >| | ![]() |
21 Einträge, 3 Seiten |
renee+2007-09-19 13:12:52--stimmt, da ich nicht mit format arbeite (habe eine unerklärliche Abneigung dagegen), denke ich da nicht dran...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
#!/usr/bin/perl use strict; use warnings; use Perl6::Form; my @values = ( [ 1, 1, 'value1' ], [ 2, 20, 'value2' ], [ 3, 2000, 'value3' ], ); print form "+---------+-----------+-----------+", "| Wert1 | Wert2 | Wert3 |", "+---------+-----------+-----------+"; for my $value ( @values ) { print form "| {<<<<<} | {|||||||} | {>>>>>>>} |", $value->[0], $value->[1], $value->[2], } print form "+---------+-----------+-----------+";
1 2 3 4 5 6 7 8 9 10 11 12
use Perl6::Form; my @werte1 = qw( 1 2 3 ); my @werte2 = qw( 2 20 2000 ); my @werte3 = qw( value1 value2 value3 ); print form "+---------+-----------+-----------+", "| Wert1 | Wert2 | Wert3 |", "+---------+-----------+-----------+", "| {[[[[[} | {IIIIIII} | {]]]]]]]} |", \@werte1, \@werte2, \@werte3 , "+---------+-----------+-----------+";
renee+2007-09-19 12:52:44--Code (perl): (dl )1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27#!/usr/bin/perl use strict; use warnings; my @values = ( ['T',20,'H'], ['Hallo',3,'Welt'], ['Test',1035,'Eintrag'], ); my $length = 6; print sprintf "%-7s| %s |%9s\n",'col1','col2','col3'; for my $ref ( @values ){ print_formatted( $length, @$ref ); } sub print_formatted{ my ($max,$t1,$zahl,$t2) = @_; my ($rand) = int( ($max - length $zahl) / 2 ); my $right = $max - $rand - length $zahl; my $format = "%-7s|%*s%s%*s|%9s\n"; print sprintf $format, $t1,$rand,' ',$zahl,$right,' ',$t2; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
my $length; my $width=4; sub print_formatted{ my ($max,$t1,$t2,$t3,$t4,$t5,$t6) = @_; # berechne den linken Rand $lRand my ($lRand) = int( ($max - length $t4) / 2 ); # berechne den rechten Rand $rRand my $rRand = $max - $lRand - length $t4; my $format = "%6d %-12s %-12s %*s%s%*s %-12s %10d\n"; print sprintf $format, $t1,$t2,$t3,$lRand,' ',$t4,$rRand,' ',$t5,$t6; } print sprintf "%6s %-12s %-12s %s %-12s %10s\n", "Spalte1", "Spalte2", "Spalte3", "Spalte4", "Spalte5", "Spalte6"; for(my $i=0; $i<=$#array; $i=$i+6) { print_formatted($width, $array[$i], $array[$i+1], $array[$i+2], $array[$i+3], $array[$i+4], $array[$i+5]); }
renee+2007-09-19 15:07:15--Du musst in Zeile 17 die Breite der entsprechenden Spalte anpassen... Lass' die Spaltentitle am Besten auch mit der Subroutine ausgeben...
Duff+2007-09-19 15:21:45--renee+2007-09-19 15:07:15--Du musst in Zeile 17 die Breite der entsprechenden Spalte anpassen... Lass' die Spaltentitle am Besten auch mit der Subroutine ausgeben...
Sorry, aber in Zeile 17 steht doch für die Spalte ein %s, was beliebig groß sein darf, oder nicht?
1
2
| Spalte1 | Spalte2 | Spalte3 | Spalte4 | Spalte5 |
| einWe | Test | Welt | aseinsdrsesad | hallo |
QuoteUnd du meinst die Zeile 17 mit in die Funktion packen?
renee+2007-09-19 15:34:16--Duff+2007-09-19 15:21:45--renee+2007-09-19 15:07:15--Du musst in Zeile 17 die Breite der entsprechenden Spalte anpassen... Lass' die Spaltentitle am Besten auch mit der Subroutine ausgeben...
Sorry, aber in Zeile 17 steht doch für die Spalte ein %s, was beliebig groß sein darf, oder nicht?
Ja, aber wenn Deine Werte breiter sind als "Spalte4", dann sieht es etwa so aus:
Code: (dl )1
2| Spalte1 | Spalte2 | Spalte3 | Spalte4 | Spalte5 |
| einWe | Test | Welt | aseinsdrsesad | hallo |
Und das ist was passiert, oder?
Deswegen musst Du auch den Spaltentitel von Spalte 4 breiter machen, damit das passt...
QuoteUnd du meinst die Zeile 17 mit in die Funktion packen?
Nein, für die Spaltentitel auch die Subroutine aufrufen...
![]() |
|< 1 2 3 >| | ![]() |
21 Einträge, 3 Seiten |