搜索模式未在Perl中终止

时间:2012-04-24 13:46:14

标签: perl

我一直在尝试调试此搜索模式没有终止错误,但似乎无法找到(我猜我的每个循环)它没有终止?我的代码底部的最后一行是第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 个答案:

答案 0 :(得分:7)

我认为你正在尝试做heredoc风格的引用,但它应该是这样的:

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

你在底部的那些印刷语句中缺少双引号。他们应该是这样的:

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

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

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

答案 3 :(得分:0)

这是什么?

</body>
print</html>FOOTER;

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