1

さて、これは奇妙なものです。

すべてのサーバーは ActivePerl 5.8.8 と Windows Server 2003 を使用しています。

一部の開発中に、作業中のスクリプトが CGI エラーを返し始めるという問題に遭遇しました。一定の CGI エラーが発生するだけで、ヘッダーを印刷しても機能しません。この問題は、1 つの開発サーバーに追いやられました。

掘り下げた後、問題は警告に関連していることがわかりました。perl が特定の警告をスローすると、IIS からページが戻ってきて、CGI ヘッダーが正しくなく、本文には何もありません。具体的には、初期化されていない文字列の連結に関する警告です。

これが私が使用しているテストスクリプトです。

use strict;


Main();

sub Main {
  my $Web = new CGI;
    my $SQL = VIN::SQL->new('INDIGO');
  print $Web->header();
  print "Testing!";
  print "/r/n/r/n/";
  my ($Body, $Title) = ('', '');
    my $Page;
    eval{
        $Page = "";
        $Page  = $Web->param('Page');
        print "Page " . $Page;

    };
}

警告なしのステートメントを追加すると、実行されます。Page パラメーターを追加すると、それが実行されることも意味します。

何が原因である可能性がありますか?「警告なし」ステートメントを追加して先に進む前に、なぜこれが私たちのライブ環境で発生したかのように、警告なしを追加したくない理由を理解したいと思います。システム内のすべての perl スクリプトに対するステートメント。

いつもお世話になっております。

4

2 に答える 2

2

$Pageであってはならないのでundef|| ""代わりに空の文字列が割り当てられていることを確認してください。

sub Main {
  my $Web = new CGI;
  my $SQL = VIN::SQL->new('INDIGO');
  print $Web->header();
  print "Testing!";
  print "/r/n/r/n/";
  my ($Body, $Title) = ('', '');

  my $Page = $Web->param('Page') || "";
  print "Page ". $Page;
}
于 2013-05-23T21:05:33.507 に答える