несколько Perl `print $ cgi-> header, << HTML; .... оператор HTML `создает проблему - PullRequest
0 голосов
/ 05 апреля 2010

у меня есть что-то вроде:

    #!/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;

нравится: print $cgi->header, << HTML;

ошибка меняется на:

Сообщение об ошибке: не удается найти строку терминатор "" где-нибудь перед EOF в C: /xampp/htdocs/perl/action.pl line 14.,

в чем причина?

примечание: параметры передаются с другой страницы («selid» или «delid» или «upid»)

1 Ответ

3 голосов
/ 05 апреля 2010

Необходимо убедиться, что конечный тег для heredocs находится в начале строки, иначе тег не будет распознан интерпретатором. Поэтому поместите окончание HTML в самом начале строки, без пробелов перед ним.

Также имейте в виду, что использование двойных кавычек вокруг начального тега (например, print << "HTML";) позволяет интерполировать переменные, использование одинарных кавычек - нет, а использование тега без обоих ведет себя как двойные кавычки </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...