Software > Programmieren, Kompilieren

Perl Befehle innerhalb einer CGI-Funktion benutzen

(1/1)

franco:
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

claus:
Hallo,

das Problem kommt mir bekannt vor.

Ich mach das einfach so:


--- Code: ---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;
--- Ende Code ---


in den Subroutinen kommt dann so etwas:



--- Code: ---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";
}
--- Ende Code ---

sieht zwar scheusslich aus, aber der generierte HTML code ist sauber und es funktioniert.

Keine Ahnung, wie man das wirklich richtig macht.

Claus

Sonnenbrand:
Hallo Frank,


--- Zitat von: franco98 am 14. Mai 2007, 12:59:04 ---
Das geht so natürlich nicht, aber wie macht man's? Kennt sich jemand damit evt. aus?

Danke, Gruss aus LE
Frank


--- Ende Zitat ---


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

franco:
Danke erstmal fuer die Antworten, ich werde es morgen in der Firma testen!
Gruss Frank aus LE

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln