有点。您可以使用do
嵌入for
:
print $survey->tr(
$survey->td(
do {
my @forms;
for my $i (0..$size-1) {
push @forms, $survey->form(
{ name=>'survey', method => 'POST', action => 'survey.cgi' },
$survey->hidden(name=>"q$_", value => "currentQ[q$_]"),
$survey->submit(name=>'direction', value =>'Previous'),
);
}
@forms
},
$survey->form(
{ name=>'survey', method=>'POST', action=>'survey.pl.cgi' },
$survey->submit(name=>'direction', value =>'Next'),
),
),
);
它可能更容易预先计算的内部零件,虽然。
my @forms;
for my $i (0..$size-1) {
push @forms, $survey->form(
{ name=>'survey', method => 'POST', action => 'survey.cgi' },
$survey->hidden(name=>"q$i", value => "currentQ[q$i]"),
$survey->submit(name=>'direction', value =>'Previous'),
);
}
push @forms, $survey->form(
{ name=>'survey', method=>'POST', action=>'survey.pl.cgi' },
$survey->submit(name=>'direction', value =>'Next'),
);
print $survey->tr($survey->td(@forms));
如果你确实想拥有for
在中间,你可以使用startXXX
和endXXX
。
print $survey->starttr();
print $survey->starttd();
for my $i (0..$size-1) {
print $survey->form(
{ name=>'survey', method => 'POST', action => 'survey.cgi' },
$survey->hidden(name=>"q$i", value => "currentQ[q$i]"),
$survey->submit(name=>'direction', value =>'Previous'),
);
}
print $survey->form(
{ name=>'survey', method=>'POST', action=>'survey.pl.cgi' },
$survey->submit(name=>'direction', value =>'Next'),
);
print $survey->endtd();
print $survey->endtr();
最后,map
整齐地结合do
for
。
print $survey->tr(
$survey->td(
(map {
$survey->form(
{ name=>'survey', method => 'POST', action => 'survey.cgi' },
$survey->hidden(name=>"q$_", value => "currentQ[q$_]"),
$survey->submit(name=>'direction', value =>'Previous'),
);
} 0..$size-1),
$survey->form(
{ name=>'survey', method=>'POST', action=>'survey.pl.cgi' },
$survey->submit(name=>'direction', value =>'Next'),
),
),
);
's/$ survey-td/$ survey-> td /'? – mob 2011-05-25 15:11:53
«Tr»»⇒«tr'»。 «'-td'»⇒«' - > td'»。 «'$ i = 0;'»⇒«'我的$ i = 0;'»。 ('$ i = 0; $ i <$ size; $ i ++);''⇒«'为我的$ i(0 .. $ size-1);'»。第一个'startform'需要在循环中。最后一个'startform'需要一个匹配的'endform'。 – ikegami 2011-05-25 19:10:50
请停止使用肮脏的旧CGI.pm.改用现代和干净的网络引擎,例如[舞者](http://www.perldancer.org/)或[Mojolicious](http://mojolicious.org/)。 – dolmen 2012-08-31 10:22:04