Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8337[/thread]

Problem der Zerlegung



<< >> 6 Einträge, 1 Seite
Noisebreath
 2006-09-15 16:13
#69950 #69950
User since
2006-04-14
72 Artikel
BenutzerIn
[default_avatar]
Hi,

ich stecke leider in meinem Programm an einer extrem wichtigen Stelle fest.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
foreach my $ele (@documentlist){
    my $file = ${$ele->name()}.'.html';
    open(my $fh,'>',$file) or die $!;+
    my $string = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd"><html><head><title>'.$file.'</title></head><body>'.
       '<h[3] align=center>'.${$ele->name()}.'</h[3]><br/><br/><br/> <table border="3">';

# PROBLEM
    foreach my $ele2 (%{$ele->spalteninfo()}){
                      }

    $string .= '</table></body></html>';
    print $fh $string;
    close $fh or die $!;
}


Die Sache ist die , %{$ele->spalteninfo()} bekomme ich übergeben und wenn ich es mir ausgeben (print %{$ele->spalteninfo()}) lasse dann ist es von der Form: Datum01.08.2003VerfasserJürgenMannSchriftstückZA-document...etc

Im Klartext bedeutet dass abwechselnd immer Header und Inhalt der Spalte drinstehn:Header1Inhalt1Header2Inhalt2.
Ich hab leider keine Idee wie ich den Algorithmus schreiben kann das meine Tabelle in der ersten Zeile die Header stehen hat und danach in den nächsten Zeilen einfach die Inhalte der einzelnen $ele auffüllt. Alle Elemente haben die gleichen Header in diesem Programmausschnitt.
D.h. so sollte es am ende aussehen

      Header1 Header2 Header3 etc
ele1  Inhalt1   Inhalt2  Inhalt3
ele2  Inhalt1   Inhalt2  Inhalt3
ele3  Inhalt1   Inhalt2  Inhalt3
      etc.

Kann mir da jemand weiterhelfen? Ich hab da einfach keine Idee.

P.S.: Ich weiss dass man Webprogrammierung hier nicht posten soll aber ich bin der Meinung dass dieses Problem nur 2rangig mit Web zu tun hat.falls ich falsch liege gebt mir bitte bescheid dann werde ich zukünftig sowas nicht mehr hier posten.\n\n

<!--EDIT|Noisebreath|1158322468-->
Ronnie
 2006-09-15 16:36
#69951 #69951
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Wir wissen nicht wie deine Eingangsdaten aussehen, und du zeigst nur einen kurzen Ausschnitt aus dem Skript. Prinzipiell schau dir mal ein Templating-Modul an wie CPAN:HTML::Template::Compiled, das könnte helfen. Ansonsten zeig mehr von dem Skript.
renee
 2006-09-15 16:41
#69952 #69952
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du solltest Dir mal anlesen, wie ein Hash aufgebaut ist, dann verstehst Du auch, warum Deine Ausgabe so ist wie sie ist!

Probier mal:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
foreach my $ele (@documentlist){
my $file = ${$ele->name()}.'.html';
open(my $fh,'>',$file) or die $!;+
print $fh '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"><html><head><title>'.$file.'</title></head><body>'.
'<h[3] align=center>'.${$ele->name()}.'</h[3]><br/><br/><br/> <table border="3">';

# PROBLEM
my %hash = %{$ele->spalteninfo()};
my @sorted = sort keys %hash;
for my $key(@sorted){
print $fh '<th>'.$key.'</th>';
}
for my $key(@sorted){
print $fh '<td>'.$hash{$key}.'</td>';
}

print $fh'</table></body></html>';
close $fh or die $!;
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Noisebreath
 2006-09-18 17:47
#69953 #69953
User since
2006-04-14
72 Artikel
BenutzerIn
[default_avatar]
#ä\n\n

<!--EDIT|Noisebreath|1158600675-->
GwenDragon
 2006-09-19 15:32
#69954 #69954
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Relais
 2006-09-19 22:27
#69955 #69955
User since
2003-08-06
2246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Noisebreath: Schau mal unter perlintro: Perls Variablen-Typen, wie das mit Hashes geht.

Das folgende ist nicht so hübsch:
Code: (dl )
print %hash


Besser wäre ein:
Code: (dl )
1
2
3
for my $k ( sort keys %hash ) {
print "key: $k => value: $hash{$k}\n";
}
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop (Termin wird noch gesucht) 2025 in München.

Winter is Coming
<< >> 6 Einträge, 1 Seite



View all threads created 2006-09-15 16:13.