2

如何从 Web 浏览器运行 Perl 脚本?是否需要某种 Web 服务器(例如,我们使用 Apache for PHP)?

4

3 回答 3

4

Now I want to know how I can run perl script on browser.

It certainly used to be possible to run client side PerlScript.

… providing the user had the ActiveState PerlScript plugin installed

… and was running Internet Explorer.

I've no idea if that is still available, but it isn't in common use on the WWW so would only be practical for system that you control (such as an Intranet application). Even then, the Internet Explorer lock in makes it a bad idea.

Is there need any kind of web server as we use in Apache for PHP.

Server side Perl is the usual choice for the WWW, and that needs a webserver

All of the recent development I've seen (baring quick, hacky demos written in CGI), uses Plack / PGSI. This defines an common interface between a Perl program and a number of means to interact with web servers (including CGI, FastCGI, mod_perl and mod_psgi). It also provides a plackup as a tiny webserver for testing and debugging.

It is used by most of the current crop of web frameworks for Perl

Here is a very simple skeleton application I knocked together while figuring out PSGI. It just sends details of the request back to the browser.

use v5.12;
use Data::Dump qw/dump/;
use Plack::Request;

my $app = sub {
        my $env = shift;
        my $req = Plack::Request->new($env);
        my $content = dump($req->parameters);

        return [ 
                200,
                [ "Content-Type" => "text/plain" ],
                [ $content ]
        ];
};
于 2012-09-02T09:12:06.777 回答
3

在您的 DocumentRoot 中(或仅在您要执行 perl 脚本的文件夹中)添加一个名为.htaccess以下内​​容的文件:

Options -Indexes +ExecCGI
AddHandler cgi-script .pl

从现在开始,每个具有扩展名的文件.pl都将在服务器端执行,然后再将输出发送到客户端。

您的文件必须以shebang开头,否则服务器将不知道如何解释其内容:

#!/usr/bin/perl

# And then your code...

use strict;
use warnings;

...
...

这是您在实际运行 php 脚本时运行 perl 脚本所需的基本内容。当然,您需要一个 http 服务器(Apache 总是一个不错的选择)。

当然,如果您正在寻找一个让您的生活更轻松的开发框架,请查看其他答案。但是,它们都不需要在 web 服务器上运行 perl,如果您只想运行小脚本,它们几乎没用。

于 2012-09-02T09:27:10.850 回答
1

这是一个很大的话题。不知道从哪里开始推荐。

我认为您的意思是想在 Web 服务器中运行 perl 脚本,而不是在浏览器中(默认情况下不支持这种事情,我不知道有任何浏览器插件可以直接执行此操作)。对于 Web 服务器,最好的办法可能是选择一个框架(Catalyst、Dancer 等)或编写一些 CGI 脚本(请参阅 CPAN 上的 CGI::Simple 及其文档以了解从那里开始的好地方)。

此外,还有用于 Web 服务框架的 Plack 和 Mojolicious。这些可以连接到 Apache 和其他服务器,并且可以缓存代码。请记住,如果您的变量没有很好的作用域,缓存代码可能会导致有趣的副作用。

于 2012-09-02T09:13:13.393 回答