%use IPC::Run3;
%my $a;
%run3 ['echo','hello'],\undef,\$a;
<% $a %>
Приведенный выше код mason
работает очень хорошо, когда я использую Mason
из автономного скрипта, как описано в HTML::Mason::Admin
. К сожалению, при работе с perl_mode
$a
является пустой строкой. Ниже мой httpd.conf
Alias /mason_book /home/charlse/f/books/mason_book
<Location /mason_book>
SetHandler perl-script
AddHandler perl-script .mas
PerlHandler HTML::Mason::ApacheHandler
PerlAddVar MasonCompRoot "mason_book => /home/charles/f/books/mason_book"
</Location>
<Directory "/home/chunywan/f/books/mason_book">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Кстати
%use IPC::Run qw(run timeout);
%my @cmd=qw(echo hello world);
%my ($in,$out,$err);
%run(\@cmd, \$in, \$out, \$err) or die "cat: $?";
<pre>
out <% $out %>
</pre>
Я просто пробую IPC::Run
, который очень хорошо работает как в автономном режиме, так и в режиме mod_perl
. Кажется, мне нужно обновить весь мой исходный код, чтобы использовать IPC::Run
вместо IPC::Run3
.
PerlSetEnv IPCRUN3DEBUG 1
, журнал ошибок показывает, что run3 выполняет команду правильно, а$?
равно нулю. - person wcy   schedule 25.04.2013