解決:Scalar::Util::weakenを使おうとするとWeak references are not implementedで落ちる
Scalar::Util::weaken 使ってるスクリプトが全滅。 (略) なんでだろーとおもってとりあえず Scalar::Util 再インストールしたら直った。 謎過ぎる。。同じバージョンだったのに。
うちでも同じ現象が発生しました。
$ perl -MScalar::Util=weaken -e 42 Weak references are not implemented in the version of perl at -e line 0 BEGIN failed--compilation aborted. $ perl -MScalar::Util -e 'print Scalar::Util->VERSION' 1.18
CLONtypesterさんと同じく再インストールしたら直りました。
$ cpan -fi Scalar::Util $ perl -MScalar::Util=weaken -e 42 $ perl -MScalar::Util -e 'print Scalar::Util->VERSION' 1.18
追記:XSバージョンかどうかで挙動が変わるようです。 Mailing List Archive: Storable 2.15 on OSX 10.4 with maintperl fails "make test" 試しにXSを使わずにやってみました。まず既存のScalar::Utilをアンインストール。
$ cpan cpan> look Scalar::Util $ perl Makefile.PL $ make uninstall (unlink ...をコピペ実行)そして、XSを使わずにテストしてみる。
$ make distclean $ perl Makefile.PL -pm $ make $ perl -Mblib -MScalar::Util=weaken -e 42 Weak references are not implemented in the version of perl at - line 0 BEGIN failed--compilation aborted.キタ━━━━ヽ(´Α` )ノ━━━━!!!! 次にXSバージョンでテストしてみる。
$ make distclean $ perl Makefile.PL -xs $ make $ perl -Mblib -MScalar::Util=weaken -e 42 $キタ━━━━ヽ(´∀` )ノ━━━━!!!! というわけで、バージョン番号が同じでもPurePerlバージョンかXSバージョンかの違いがあったということでした。 なお、Makefile.PLにオプションを指定しない場合は、Cコンパイラが利用可能であればXSになるようです。