perl -d のエラー IO::Scalar::FILENO がない
perl -d で、x $var ってやると下記のようなエラーがでました(perl 5.8.7)。
-> *IO::Scalar::FH Can't locate object method "FILENO" via package "IO::Scalar" at /usr/local/perl5.8.7/lib/5.8.7/dumpvar.pl line 274. at /usr/local/perl5.8.7/lib/5.8.7/dumpvar.pl line 274 dumpvar::unwrap('IO::Scalar=GLOB(0x8857458)', 6, -3) called at /usr/local/perl5.8.7/lib/5.8.7/dumpvar.pl line 119 dumpvar::DumpElem('IO::Scalar=GLOB(0x8857458)', 6, -3) called at /usr/local/perl5.8.7/lib/5.8.7/dumpvar.pl line 208 dumpvar::unwrap('FM=HASH(0x8860f5c)', 3, -2) called at /usr/local/perl5.8.7/lib/5.8.7/dumpvar.pl line 119 dumpvar::DumpElem('FM=HASH(0x8860f5c)', 3, -2) called at /usr/local/perl5.8.7/lib/5.8.7/dumpvar.pl line 245 dumpvar::unwrap('ARRAY(0x8bde054)', 0, -1) called at /usr/local/perl5.8.7/lib/5.8.7/dumpvar.pl line 34 main::dumpValue('ARRAY(0x8bde054)', -1) called at /usr/local/perl5.8.7/lib/5.8.7/perl5db.pl line 5576 DB::dumpit('GLOB(0x81a3068)', 'ARRAY(0x8bde054)') called at /usr/local/perl5.8.7/lib/5.8.7/perl5db.pl line 657 DB::eval called at /usr/local/perl5.8.7/lib/5.8.7/perl5db.pl line 3410 DB::DB called at ./fml.cgi line 14 Debugged program terminated. Use q to quit or R to restart, use O inhibit_exit to avoid stopping after program termination, h q, h R or h O to get additional info. DB<2>
google に聞いたら、dummy のメソッド作ったら?
とか書いてる人がいたので、そうしました。
*{IO::Scalar::FILENO} = sub {};
ExportTo をもっている奇特な人は次のようにかけます。
sub FILENO{} use ExportTo ("IO::Scalar" => [qw/FILENO/]);
あっ、長くなってら(ぉ
# 右がcode ref なら、左は関数名にしてしまおうかな。
いずれにせよ、うまくいきました(って、これでいいのかは謎ですが、動かなくなるよりだいぶまし)。