sonnenblen.de - Das unabhängige Sun User Forum
Software => Programmieren, Kompilieren => Thema gestartet von: franco am 14. Mai 2007, 12:59:04
-
Hallo SUN-Freunde,
ich habe z.Z. ein Problem mit einem CGI-Script.
Ich benutze den s.g function-oriented style und möchte innerhalb einer cgi-Funktion aus cgi.pm eine normale foreach Schleife einbauen bzw. normale Perl-Befehle.
Etwa so:
print header("text/html"),
start_html(...);
print table({-align=>'center}, foreach my $element(@$liste) {
Tr(),
foreach my $feld (@$element) {
td($feld),
}
}
); # end table
usw...
print end_html;
Das geht so natürlich nicht, aber wie macht man's? Kennt sich jemand damit evt. aus?
Danke, Gruss aus LE
Frank
-
Hallo,
das Problem kommt mir bekannt vor.
Ich mach das einfach so:
my $cgi = new CGI;
print $cgi->header(-type =>'text/html',
-status => '200 ok',
-expires=> '+3d',
-charset=> 'ISO-8859-1');
&create_html_head_part();
&Parse_dir($start_dir);
&create_file_output (%file_hash);
&create_html_end_part;
in den Subroutinen kommt dann so etwas:
sub create_file_output
{
[...]
print "\t\t\t\t<p>\n";
foreach my $entry (@sorted_list)
{
next unless ($entry =~ /\.html$/);
#print $arg{$entry}."\n";
print "\t\t\t\t\t<a class=\"nav\" href=\"$path"."/$entry\">$path/$entry [$arg{$entry} bytes]</a><br />\n";
}
print "\t\t\t\t</p>\n";
}
sieht zwar scheusslich aus, aber der generierte HTML code ist sauber und es funktioniert.
Keine Ahnung, wie man das wirklich richtig macht.
Claus
-
Hallo Frank,
Das geht so natürlich nicht, aber wie macht man's? Kennt sich jemand damit evt. aus?
Danke, Gruss aus LE
Frank
auf die schnelle (weil meine Beispiele sind im Büro...):
Tr() und td() kannst du auch Arrays übergeben. Also z.B. so:
my @header= [ "A", "B", "C" ];
my @data1= [ "a", "b", "c" ];
print $html->table(Tr(@header), td(@data));
Achtung - ungetestet, da aus dem Kopf...
Falls die Schleife sich nicht via Array direkt umgehen lässt dann nutze ich einfach ein temp. Array was ich dann in der Schleife mittels push "füttere". Nach der Schleife bekommt dann die Tr() bzw. td() Funktion das temp. Array.
Andi
-
Danke erstmal fuer die Antworten, ich werde es morgen in der Firma testen!
Gruss Frank aus LE