• ベストアンサー

Requireできない...

requireされる側のファイルに、 $name = "A"; などと特定の文字A(仮に)を変数に代入しておくと、requireしたときにScript Errorになります。この1行というより、この文字Aを消すだけでエラーは解消されるのですが、これはどういう理由からでしょうか。 特殊な文字ではないので、よくわかりませんでした。

質問者が選んだベストアンサー

  • ベストアンサー
  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.1

以下のようなスクリプトをあなたの環境で実行してみてください。 ## -------------------------------- if($name = "A"){ print "A True\n"; }else{ print "A False\n";; } if($name = ""){ print "Null True\n";; }else{ print "Null False\n";; } ## -------------------------------- Perlの文法書なりを調べてみてください。 require関数は戻り値が真にならないとエラー(または続行不可)となります。 通常、その為に呼ばれる側のファイルの最後には「1;」を付けてください。

coop10
質問者

お礼

回答ありがとうございます。 もちろん[1;]はつけています。 そのスクリプトを追加してみましたが、やはりScript Errorでした。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

可能ならその「require される側のファイル」を全部載せてください.

coop10
質問者

お礼

回答ありがとうございます。 申し訳ありませんが、重要なファイルですのでおみせするわけにはいきませんが、例えば、次のようにしても結果は同じです。 [test.cgi] - 705 #!/usr/local/bin/perl print "Content-Type: text/html\n\n"; require "require.ini"; print "$name \n"; exit; [require.ini] - 644 $name = "A"; 1;

coop10
質問者

補足

突然すいません。 解決しました。どうやらシフトJIS文字の影響だったようです。 http://homepage2.nifty.com/sophia0/faq.html 入力フォームから自動で変数に代入するため、今後対策を考えます。 ありがとうございました。

関連するQ&A