Я использую установку Apache и mod_perl по умолчанию в Ubuntu 16.04.1 LTS, я также воспроизвел это с JSON :: XS по умолчанию и обновил до последней версии из CPAN JSON-XS-3.02.
Код ниже работает во всех случаях, если я не использую mod_perl.
Сценарий и html ниже работают при использовании Perl через mod_cgi как с запросами POST, так и с GET.
Однако, если я использую mod_perl и использую POST (как в предоставленном html), он терпит неудачу, «Hello» не печатается, и я получаю следующую ошибку в моем файле журнала apache.
Использование: JSON::XS::new(класс).
Если я передам те же параметры с помощью метода GET, сценарий будет работать нормально.
test2.pl
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use JSON::XS;
my $q = new CGI();
print $q->header(-type => 'text/plain');
my $action = $q->param('a');
my $json_str = '{"foo":"bar"}';
my $pscalar = JSON::XS->new->utf8->decode($json_str);
print "Hello";
exit 1;
HTML для вызова вышеуказанного (с именем test2.pl на сервере)
<html>
<body>
<form action="test2.pl" method="POST">
<input type="text" name="a"/>
<button type="submit">
</form>
</body>
</html>