2010-04-05 68 views
0

我有类似:

#!/usr/bin/perl 

use strict; 
use warnings; 
use CGI::Simple; 
use DBI; 

my $cgi = CGI::Simple->new; 


if ($cgi->param('selid')) 
{ 

    print $cgi->header, <<HTML; 
    <br/>this is SELECT 
    HTML 
} 
elsif ($cgi->param('delid')) 
{ 

    print $cgi->header, <<HTML; 
    <b>this is DELETE</b> 
    HTML 
} 
elsif ($cgi->param('upid')) 
{ 
    print $cgi->header, <<HTML; 
    <b>this is UPDATE</b> 
    HTML 
} 

当我运行此我得到一个错误,如:

错误消息: 无法找到字符串结束“ HTML” EOF位于C之前的任何地方:/xampp/htdocs/perl/action.pl线14,

<<HTML;

0123之间给予空间

,如:print $cgi->header, << HTML;

错误更改:

错误消息:无法找到字符串 终结者 “” 在 ÇEOF之前的任何地方:/xampp/htdocs/perl/action.pl线 14.

这是什么原因?

注:参数从另一个页面传递(“selid”或“delid”或“UPID”)

+0

顺便说一下,脚本开始时的shebang也必须在开始时按照预期工作。 – Svante 2010-04-05 09:34:05

回答

3

有必要确保对here文档结束标记是在该行或年初标签不会被口译员识别。所以把HTML结尾放在行的最开始,在它之前没有空格。

也请记住,使用绕开始标记双引号(如打印< <“HTML”),允许插入变量,使用单引号不和使用标签没有任何行为就像双引号

+0

此外,建议使用任何一种报价而不是没有引号,这样的行为是明确的。 – 2010-04-05 09:53:22