• ベストアンサー

perlのエラー表示・停止を無効にしたい

Perlを動かしていると、時々、 Attempt to free unreferenced scalar: SV 0xXXXXXXX, Perl interpreter: 0xXXXXXX at XXX.cgi line XX. という感じのエラーがでてプログラムが停止します。 なぜか理由も分かりませんが、VirtualPC環境の為、OSがフリーズするなどは問題ないですし、データが正常に記録されるよりも、より長時間動いてくれる方が助かるため、こういったエラーを出して、停止しない様にしたいのですが方法はありますでしょうか? どなたがご存知の方がおられましたら教えて頂けないでしょうか。 宜しくお願い致します。

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

  • ベストアンサー
回答No.1

まず最初に警告やエラーメッセージの意味を知りたい時は perldoc perldiag とするとメッセージの意味がずらっと並んだページが表示されるので、そこで探してみると分かります。 若干場当たり的な対処法としては no warnings 'internal'; とすれば警告は出なくなるようです。 恐らく警告が出る理由なのですが、まずPerlはC言語で作られています。 (若干違いますが、分かりやすく説明すると)そのC言語の中で既にメモリが破棄されているにもかかわらずもう一回破棄しようとしているので警告が出てる、といった状況だと思います。 これもまた恐らく、なのですが、これはPerlインタプリタの問題ではなく、Cを使って実装されているなんらかのモジュールがメモリ破棄をしくっている可能性があります。 なので現段階としては冒頭の no warnings 'internal'; が妥当な回避方法だと思います。 ただ質問者様がCを使ったモジュールをご自分で実装している場合はそのモジュールを直せば済む話ですが。

pevtone
質問者

お礼

ありがとうございます! とても助かりました!!!

関連するQ&A