0

サーバー上で perl を動作させるための非常に基本的なことを誰か説明してくれませんか? サーバーにモジュールが必要ですか? もしそうなら、それはどこに行きますか?ファイルには何と名前を付け、どこに保存しますか?

私の理解では、モジュールが必要であり、それは cgi-bin に入ります。ファイルに .pl と .cgi のどちらの名前を付けても明確な答えが得られず、cgi-bin に入れるとサーバー エラーが発生します。また、パーミッションを 777 に設定しているので、問題にはなりません。

助けてください!以下のような非常に基本的なプログラムを機能させる方法を理解したいだけです。前もって感謝します!

    #!/usr/bin/perl
    require("cgi-lib.pl");
    print &PrintHeader;

    print "<html>";
    print "<head><title>Hello world!</title></head>";
    print "<body>";
    print "<p>Hello world!</p>";
    print "</body>";
    print "</html>";
4

3 に答える 3

9

の最新バージョンのcgi-lib.pl日付は 1999 年で、非常に古くなっています。代わりにライブラリを使用することをお勧めしますCGI。これは、サーバーに既にインストールされていることがほとんどであり、最新の状態に保たれています (最近では 2012 年 8 月 16 日)。

プログラムは次のようになります。

#!/usr/bin/perl -- 

use strict;
use warnings;

use CGI ':standard';

print header;

print <<END;
<html>
  <head><title>Hello world!</title></head>
  <body>
    <p>Hello world!</p>
  </body>
</html>
END

また、コマンドラインからプログラムを実行して、コンパイルされるかどうか、および生成される出力を確認できることにも注意してください。そこで動作するようになったら、サーバーに移動できます

于 2012-10-01T01:05:56.723 に答える
2

あなたが直面している問題は、Windows マシンでソース ファイルを編集した可能性があり、CR各改行の前に文字が挿入されることです。コードに CR が含まれていないことを確認するか、最初の行を次のように変更します。

#!/usr/bin/perl -- 

(これは行末の 2 つのダッシュとスペースです)

于 2012-10-01T00:53:37.333 に答える
0

私は Dave Cross のコメントに同意します。学校が間違って教えていることを学校に伝える必要があります。私たちは Perl の世界で人々に CGI モジュールの使用をやめさせようとしていますが、あなたはその前身のモジュールを使用しています!

これは、最新の Perl フレームワークであるMojoliciousの Hello World アプリです。

#!/usr/bin/env perl

use Mojolicious::Lite;

get '/' => 'hello';

app->start;

__DATA__

@@ hello.html.ep
<html>
  <head><title>Hello world!</title></head>
  <body>
    <p>Hello world!</p>
  </body>
</html>

これをファイルに入れます(としましょうtest.pl)。以下を実行して Mojolicious をインストールします。

curl get.mojolicio.us | sh

次に、実行してアプリを起動します

perl test.pl daemon

これで、ブラウザーでアクセスして結果を確認できhttp://localhost:3000ます。Apache も cgi-bin も必要ありません!

より楽しい例では、デフォルトで「引数」を取ります:

#!/usr/bin/env perl

use Mojolicious::Lite;

get '/:name' => { name => 'world' } => 'hello';

app->start;

__DATA__

@@ hello.html.ep
<html>
  <head><title>Hello <%= $name %>!</title></head>
  <body>
    <p>Hello <%= $name %>!</p>
  </body>
</html>

これを実行してアクセスしてみてhttp://localhost:3000/SilverNightaFall、その動作を確認してください!

動的な値を HTML に挿入するこのプロセスはテンプレート化として知られており、最近では (リクエストごとに HTML 全体を生成するよりも) 好まれています。

于 2012-11-02T20:04:29.837 に答える