1

我一直在尝试调试此搜索模式未终止错误,但似乎无法找到(我猜我的 for each 循环)它未终止的位置?我的代码底部的最后一行是第 160 行。任何人都可以给我任何关于我的代码有什么问题的提示吗?我正在尝试打印选择结果中的每个标题及其每一行中的每个数据,并将其打印在 CGI 页面上。

C:\xampp\cgi-bin>perl create_report.cgi 搜索模式未在 create_report.cgi 第 160 行终止。

foreach $rpt_sel_output(@desc_origin)
{
($rptid, $servid, $rptcat_id, $desc, $remail_add, $remail_info, $ent_usr, $ent_dte, $up_usr, $up_dte, $fav)=split(",",$rpt_sel_output);
if($rptid eq 'ReportID') #header rows
{
print"<tr>/n";
print"<th>$rptid</th>";
print"<th>$servid</th>";
print"<th>$rptcat_id</th>";
print"<th>$desc</th>";
print"<th>$remail_add</th>";
print"<th>$remail_info</th>";
print"<th>$ent_usr</th>";
print"<th>$ent_dte</th>";
print"<th>$up_usr</th>";
print"<th>$up_dte</th>";
print"<th>$fav</th>";
print"<tr/>/n";
print"</table>/n";
next;
}
print"<tr>/n";# data from select that was outputed
print"<td>$rptid</td>";
print"<td align 'right'> $servid</td>/n";
print"<td align 'right'> $rptcat_id</td>/n";
print"<td align 'right'> $desc</td>/n";
print"<td align 'right'> $remail_add</td>/n";
print"<td align 'right'> $remail_info</td>/n";
print"<td align 'right'> $ent_usr</td>/n";
print"<td align 'right'> $ent_dte</td>/n";
print"<td align 'right'> $up_usr</td>/n";
print"<td align 'right'> $up_dte</td>/n";
print"<td align 'right'> $fav</td>/n";
print"<tr/>/n";
}
}
print"</table>/n";


print"<<FOOTER/n"; 
     </body>
print</html>FOOTER;
4

4 回答 4

7

我认为您正在尝试进行 heredoc 样式的引用,但它应该如下所示:

print <<FOOTER;
</body>
</html>
FOOTER

为您节省大量print语句;) 如果您需要变量插值,请将 heredoc 结束标记放在双引号 ( print <<"FOOTER";) 中。单引号可以防止插值(正如@daxim 所指出的那样)。有关 heredoc 的更多信息,请参阅perlop或 JFGI。

于 2012-04-24T13:59:46.827 回答
0

您只是错过了打印...不是吗?你应该用这个来完成你的脚本:

print"<FOOTER />\n"; 
print"</body>";
print "</html>";
于 2012-04-24T13:48:34.757 回答
0

您在底部的那些打印语句周围缺少双引号。它们应该如下所示:

print"<<FOOTER/n"; 
print "</body>";
print "</html>FOOTER";

如果你还没有,你应该使用带有语法高亮的编辑器。他们清楚地指出了这样的问题。

错误谈论搜索模式的原因是因为它看到了一个/字符,该字符开始定义正则表达式(或搜索模式)。

于 2012-04-24T13:48:56.897 回答
0

这是什么 ?

</body>
print</html>FOOTER;

可能这就是你的错误所在..

于 2012-04-24T13:49:18.423 回答