Autor Thema: Perl Befehle innerhalb einer CGI-Funktion benutzen  (Gelesen 8176 mal)

Offline franco

  • Sobl Bachelor
  • ***
  • Beiträge: 146
  • Sparc-Liebhaber
Perl Befehle innerhalb einer CGI-Funktion benutzen
« 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

sonnenblen.de - Das unabhängige Sun User Forum

Perl Befehle innerhalb einer CGI-Funktion benutzen
« am: 14. Mai 2007, 12:59:04 »

claus

  • Gast
Re: Perl Befehle innerhalb einer CGI-Funktion benutzen
« Antwort #1 am: 14. Mai 2007, 18:21:12 »
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

Offline Sonnenbrand

  • Sobl Junior
  • **
  • Beiträge: 84
Re: Perl Befehle innerhalb einer CGI-Funktion benutzen
« Antwort #2 am: 14. Mai 2007, 21:06:55 »
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

Offline franco

  • Sobl Bachelor
  • ***
  • Beiträge: 146
  • Sparc-Liebhaber
Re: Perl Befehle innerhalb einer CGI-Funktion benutzen
« Antwort #3 am: 14. Mai 2007, 22:01:24 »
Danke erstmal fuer die Antworten, ich werde es morgen in der Firma testen!
Gruss Frank aus LE