Я занимаюсь разработкой, которая использует встроенный Linux для ОС и Boa для веб-сервера. У меня есть веб-страница, которая публикует сценарий CGI, обрабатывает данные формы и отвечает. Моя среда разработки была Ubuntu, и все работало нормально, но когда я перенес свой код на встроенный Linux, модуль CGI не был создан (или, по крайней мере, не был создан). Вот урезанный раздел моего кода. Оператор print жалуется на неинициализированную переменную.
use CGI;
use strict;
use warnings;
my $cgiObj = CGI->new();
print $cgiObj->param('wlanPort');
Опять же, это прекрасно работает в моей среде разработки, но не работает во встроенной среде. CGI.pm установлен, и в команде CGI-> new () нет ошибок. Я также проверил, что данные формы отправляются, но, очевидно, не могу гарантировать, что они получены сценарием Perl.
У меня такое ощущение, что это проблема конфигурации Боа, и это то, что я буду рассматривать дальше. Я довольно новичок в Perl, поэтому я не уверен, что еще делать. Есть идеи?
РЕДАКТИРОВАТЬ: Определенно не проблема конфигурации Боа. Все еще смотрю на это.
UPDATE:
Я упростил свой код до следующего:
#!/usr/bin/perl
use CGI qw(:standard);
$data = param('wlanPort') || '<i>(No Input)</i>';
print header;
print <<END;
<title>Echoing user input</title>
<p>wlanPort: $data</p>
END
Как и ожидалось, он печатает (без ввода)
Я должен также указать, что форма имеет вид enctype = "multipart / form-data", потому что у меня должна быть возможность загрузки файла, и я использую метод "POST".
Я использовал плагин HttpFox для проверки почтовых данных и проверил значение wlanPort:
----------------------------- 132407047814270795471206851178 Content-Disposition: form-data;
Name = "wlanPort"
eth1
Так что это почти наверняка отправляется ...
ОБНОВЛЕНИЕ 2: Я установил ту же версию Perl и Boa, которая используется во встроенной системе, на моем ноутбуке Ubuntu. Работает на ноутбуке, а не на устройстве, что является тем же результатом. Я сказал своему работодателю, что исчерпал все возможности, кроме того, как Boa и (Micro) Perl построены на устройстве по сравнению с Ubuntu.