Portál AbcLinuxu, 10. listopadu 2025 19:27
sub articles {
while ( $odpoved = $dotaz->fetchrow_hashref() ) {
$cgi->h2(
$cgi->a({-href=>"$host/articles.pl?page=$odpoved->{'id'}"},
"$odpoved->{'title'}",
),
),
$cgi->h3(
"$odpoved->{'hlavicka'}",
),
$cgi->a({-href=>"$host/articles.pl?page=$odpoved->{'id'}"},
"Pokracovat>>",
),
}
}(pripojeni a dotaz je jeste pred podprogramem, vcetne execute(); )
Problem je v tom, ze tahle konstrukce nevraci nic, ani chybovou hlasku. Pokud to vlozim primo do tela zpravy bez podprogramu, tak mi to zahlasi syntax error u while. Kdyz to podobne napisu do normalniho scriptu a ne CGI, spustim, tak jde vsechno v poradku. Googlil jsem celkem dlouho ale nic co by mi nejak pomohlo to vyresit.
Ikdyz vim, ze jsem v tomhle docela lamka, tak i presto, nasla by se nejaka dobra duse co mi pomuze? :)
Jo a předpokládám, že FETCH vrací nějaká data (ten cykl není prázdný)
Mýlím-li se, ten skript by měl se dát spouštět pomocí pouze perlu, argumenty ve tvaru PARAM=VALUE a zajímal by mne jeho výstup
...
$cgi->td({-valign=>"top",-width=>717,-height=>819,-align=>"left"},
&articles,
),
...kdyz misto &articles, vlozim while cyklus, tak to da SYNTAX ERROR na radku kde je while
&articles by melo byt pole takze sub articles() by mel vracet pole.
tvoje nic nevraci takze se vyhodnoti jako td({...}, []}
ps: comp.perl.beginners je na tyhle dotazy urcite lepsi ...
sub ... {
my @retval;
while (...) {
push @retval, $cgi->h2 (), $cgi->h3, ...;
}
return @retval;
}
b) použi HTML::Template / Template::Toolkit ; popr Catalyst na všetko dohromady
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.