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 strict
もuse warnings
ETA: stuff_1.cgi の内容をコピーして main.cgi に貼り付ける (require
ステートメントを置き換える) と、コードは問題なく動作します。
このようなものは今まで見たことがありません。何が原因である可能性がありますか?