CGI таблица с Perl

0

Я пытаюсь создать форму входа в систему с помощью CGI, используя perl.

sub show_login_form{
return div ({-id =>'loginFormDiv'}),
    start_form, "\n",
    CGI->start_table, "\n",     
    CGI->end_table, "\n",   
    end_form, "\n",
    div, "\n";
}

Мне было интересно, почему мне не нужно добавлять CGI-> до start_form но если я не start_table его перед start_table и end_table, "start_table" и "end_table" будут напечатаны как strings?

Спасибо за помощь.

  • 1
    Пожалуйста, не делай этого. Функции генерации HTML в CGI всегда были плохой идеей (даже с документацией согласен). Вместо этого используйте систему шаблонов.
  • 0
    Что говорит Дейв Кроме того, в наши дни есть гораздо лучшие альтернативы, чем CGI для написания веб-приложений / скриптов. См. Саму документацию CGI, в которой перечислены некоторые другие параметры, а также примеры metacpan.org/pod/CGI::Alternatives
Теги:
forms
cgi

1 ответ

2
Лучший ответ

Почему я могу использовать некоторые подпрограммы?

Поскольку вы, вероятно, импортируете их, используя следующий оператор использования:

use CGI qw(:standard);

Как описано в CGI - с помощью функционально-ориентированного интерфейса это будет импортировать "стандартные" функции "html2", "html3", "html4", "ssl", "form" и "cgi".

Но это не включает табличные методы.

Чтобы получить их, вы можете изменить свой оператор использования следующим образом:

use CGI qw(:standard *table);

Почему удаление CGI-> печатает start_table в виде строки?

Потому что вы неразумно не use strict включение.

Если бы у вас было, вы бы получили следующую ошибку:

Bareword "start_table" not allowed while "strict subs"
  • 0
    Возможно, стоит также добавить «и потому что вы забыли use strict ».
  • 0
    @tobyink Добавлено напоминание о use strict; , Хорошее предложение.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню