1

私はこのPerlコードを実行しました:

#!/usr/bin/perl
print "content-type: text/html \n\n";
print "Hello World.\n";

私は2つの方法でそれを試しました。1つはPerlインストールのテストですが、この方法で実行すると、いくつかの問題が発生し、実行できるプログラムを選択するように求められますが、まだ実行されていません。

2番目の方法は、Perl IDEであるPadreを使用した最初のスクリプトですが、Perlコードを記述して保存しようとすると、Perlファイルの拡張子が表示されないため、Perlファイルとして保存できません。どうすればよいですか。

4

1 に答える 1

1

コードはCGIプログラムが必要なようです。CGIとは、Webブラウザを介してプログラムを呼び出し、Webサイトを取り戻すことを意味します。vstmのコメントはもちろん非cgiプログラムには適切でしたが、あなたの例では、そのように機能するためにもう少し多くのものが必要です。

Webサーバーをインストールする必要があります。xamppを見てください。インストールと保守は簡単で、mysqlとapacheのインストールが付属しています。すべてのオーバーヘッドがないため、ライトバージョンをお勧めします。

インストールしたら、perlスクリプトを実行できるようにいくつかの構成を行う必要があります。私はあなたがすでにActivePerlをインストールしていると思います。次に、apache構成を微調整する必要があります。

あなたは言う行をc:\xampp\apache\conf\httpd.conf見つける必要があります

<Directory "C:/xampp/htdocs">

コメントを読んでください(でマークされています#)。ExecCGIセクション内に追加する必要があり<Directory>ます。perlスクリプトを実行するすべてのディレクトリに対してこれを実行します。次に、次のような行を探します

AddHandler cgi-script .cgi .pl .asp

コメントアウトされていないことを確認してください。

完了したら、プログラムをc:\xampp\htdocsフォルダーに配置し(cgi-binこれも機能するはずです)、shebang-line(の最初の行#!)をActivePerlをインストールした場所に変更しますC:\perl\bin\perl.exe。これは、perlスクリプトを実行するためにどのプログラムを使用する必要があるかをapacheに指示します。

また、コードにさらにいくつかの行を追加します。

#!C:\perl\bin\perl.exe
use strict;
use warnings;
use CGI;
use CGI::Carp('fatalsToBrowser');
print "Content-type: text/html \n\n";
print "Hello World.\n";

次に、ApacheWebサーバーを実行する必要があります。xamppインストールディレクトリには、apacheとmysqlを制御するいくつかのバッチファイルがあります。もありxampp-control.exeます。それを実行します。新しいウィンドウで、Apacheの横にある[スタート]ボタンをクリックします。

ブラウザで、に移動しhttp://localhost/<yourscript.pl>ます。「HelloWorld!」と表示されます。

そうでない場合は、Skypeを実行していないことを確認してください。これは、apacheが実行しようとするポート80をブロックします。apacheのポートを別のものに変更する必要があります。このビデオを参照してください。


私が行ったコードの変更とその機能について簡単に説明します。

  • use strict;常にコードに含める必要があります。それはあなたに特定のガイドラインを尊重し、より良いコードを書くことを強制します。これはHelloWorldプログラムでは奇妙に思えるかもしれませんが、とにかくやってください。
  • use warnings;うまくいかないかもしれないことについてあなたに話します。警告はエラーではなく、自分で知らないかもしれないことについて役立つものです。これを使って。
  • use CGIプログラムの出力をWebサーバーに送信します。CGIプログラムを使用する場合は、これが必要です。
  • print "Content-type: text/html \n\n";ブラウザが何を期待するかを知るために必要です。この場合、HTMLWebサイトです。これはHTTPヘッダーと呼ばれ、mimeタイプが含まれています。
  • use CGI::Carp('fatalsToBrowser');エラーをブラウザに送信します。これがないと、apacheのエラーログを調べない限り、それらについて知ることはできません。
于 2012-06-07T08:38:21.340 に答える