0

Linux サーバーで問題なく動作する Perl コードをいくつか継承しました。Windows XP、ActiveState Perl 5.16.2、および BitNami WAMP スタックで実行できるようにしています。(注: このセットアップは既に私の Perl .cgi プログラムを実行しているので、これは機能するセットアップです。)

とにかく、「メイン」の Perl プログラム (これを main.cgi と呼びましょう) には、次のステートメントがあります。

require("extra/stuff_1.cgi");

main.cgi を実行すると、次のエラーが発生します。

C:/BitNami/apache2/cgi-bin/extra/stuff_1.cgi did not return a true value at C:/BitNami/apache2/cgi-bin/main.cgi line XX.

ここで奇妙なのは次のとおりです。stuff_1.cgi は 1 で終わります。(つまり、ファイルの最後の行です)!

私は、stuff_1.cgi 内の関数のコードをコメントアウトしました。これは、ほとんどがヒア ドキュメントの関数です。

sub func {

return <<EOF;
...
EOF
}

だけを含むようにする

sub func {
#
#return <<EOF;
#...
#EOF
}

それでも「真の値を返さなかった」というエラーが発生します。

ただし、すべてのコードを削除すると、stuff_1.cgi が含まれます。

1; 

エラーは消えます(そうあるべきです)。

stuff_1.cgi pass perl -c、 とがあってuse strictuse warnings

ETA: stuff_1.cgi の内容をコピーして main.cgi に貼り付ける (requireステートメントを置き換える) と、コードは問題なく動作します。

このようなものは今まで見たことがありません。何が原因である可能性がありますか?

4

2 に答える 2

1

デバッガが動作しないのはなぜですか (Windows の ActiveState または Strawberry Perl)。

デバッガが動作しないのはなぜですか [Windows の ActiveState または Strawberry Perl]?

PathTools の最近のリリース (Perl ディストリビューションの一部、ファイル Cwd.pm) には、残念ながら、EPIC のデバッガ フロントエンドを壊すバグが含まれています。具体的な症状は、「perl5db.pl は真の値を返しませんでした」というエラー メッセージです。- このメッセージを表示するには、EPIC 設定で「デバッガー コンソール」を有効にする必要があります。さらに、この問題があると、デバッグがまったく機能しません。これを修正するには、Perl ディストリビューションの Cwd.pm を編集し、このバグ レポートで説明されているように、問題のある「eval」キーワードを 1 行から削除する必要があります。Perl の「lib」ディレクトリをプロジェクトのインクルード パスに追加して修正しようとしないでください。これにより、すべてのブレークポイントが無視されます。

于 2013-03-21T07:54:36.243 に答える
0

おそらく私が遭遇したのは、ActiveStateのバージョンのPerlの欠陥です。

とにかく-これにあまりにも多くの時間を費やした後-私がそれを機能させることができる唯一の方法は、交換することです

require 'extra\stuff_1.cgi';

eval { require 'extra\stuff_1.cgi' };

私はこれをしなければならないのは嫌いですが、次に進む時が来ました!

于 2013-03-21T08:43:10.437 に答える