【perlメモ】「weaken is only available with the XS version of Scalar::Util」と表示されてperlスクリプトが動かない件
なんだか、前に作ったperlスクリプトが下の様なエラーを吐いて動かなくなっていたので調べてみた。
[kumacchi@rad-xen-vweb7 hogehogehoge]$ perl hogehogehoge.pl
weaken is only available with the XS version of Scalar::Util at /usr/lib/perl5/site_perl/5.8.8/SOAP/Lite.pm line 2503
BEGIN failed–compilation aborted at /usr/lib/perl5/site_perl/5.8.8/SOAP/Lite.pm line 2503.
Compilation failed in require at /usr/lib/perl5/site_perl/5.8.8/XMLRPC/Lite.pm line 13.
BEGIN failed–compilation aborted at /usr/lib/perl5/site_perl/5.8.8/XMLRPC/Lite.pm line 13.
Compilation failed in require at hogehogehoge.pl line 105.
BEGIN failed–compilation aborted at hogehogehoge.pl line 105.
[kumacchi@rad-xen-vweb7 hogehogehoge]$
なんか、Scalar::Utilでエラーっぽいのでcpanからインストールすればいいんじゃないかと思ってやってみたけどもう入ってると言われた。
cpan> install Scalar::Util
CPAN: Storable loaded ok
Going to read /root/.cpan/Metadata
Database was generated on Sat, 10 Dec 2011 01:31:28 GMT
Scalar::Util is up to date.
検索してみると下記のブログ記事を発見。
解決:Scalar::Util::weakenを使おうとするとWeak references are not implementedで落ちる – ヒルズで働くholidays-lの技ログ
やっぱり、Scalar::Utilを入れなおせばいいらしい。
一応真似して、動作確認とバージョン表示をしてみる。
[root@rad-xen-vweb7 ~]# perl -MScalar::Util=weaken -e 42
weaken is only available with the XS version of Scalar::Util at -e line 0
BEGIN failed–compilation aborted.
[root@rad-xen-vweb7 ~]# perl -MScalar::Util -e ‘print Scalar::Util->VERSION’
1.23[root@rad-xen-vweb7 ~]# perl -MCPAN -e shell
cpanのシェルを起動して強制インストールしてみた。
[root@rad-xen-vweb7 ~]# perl -MCPAN -e shell
cpan shell — CPAN exploration and modules installation (v1.7602)
ReadLine support enabled
Display Information
command argument description
a,b,d,m WORD or /REGEXP/ about authors, bundles, distributions, modules
i WORD or /REGEXP/ about anything of above
r NONE reinstall recommendations
ls AUTHOR about files in the author’s directory
Download, Test, Make, Install…
get download
make make (implies get)
test MODULES, make test (implies make)
install DISTS, BUNDLES make install (implies test)
clean make clean
look open subshell in these dists’ directories
readme display these dists’ README files
Other
h,? display this menu ! perl-code eval a perl command
o conf [opt] set and query options q quit the cpan shell
reload cpan load CPAN.pm again reload index load newer indices
autobundle Snapshot force cmd unconditionally do cmd
cpan> force install Scalar::Util
CPAN: Storable loaded ok
Going to read /root/.cpan/Metadata
Database was generated on Sat, 10 Dec 2011 01:31:28 GMT
Running install for module Scalar::Util
Running make for G/GB/GBARR/Scalar-List-Utils-1.23.tar.gz
CPAN: Digest::MD5 loaded ok
Checksum for /root/.cpan/sources/authors/id/G/GB/GBARR/Scalar-List-Utils-1.23.tar.gz ok
Scanning cache /root/.cpan/build for sizes
Scalar-List-Utils-1.23/
Scalar-List-Utils-1.23/Changes
Scalar-List-Utils-1.23/lib/
Scalar-List-Utils-1.23/ListUtil.xs
Scalar-List-Utils-1.23/Makefile.PL
Scalar-List-Utils-1.23/MANIFEST
Scalar-List-Utils-1.23/META.yml
Scalar-List-Utils-1.23/multicall.h
Scalar-List-Utils-1.23/README
Scalar-List-Utils-1.23/SIGNATURE
Scalar-List-Utils-1.23/t/
Scalar-List-Utils-1.23/XS.pp
Scalar-List-Utils-1.23/t/00version.t
Scalar-List-Utils-1.23/t/blessed.t
Scalar-List-Utils-1.23/t/dualvar.t
Scalar-List-Utils-1.23/t/expfail.t
Scalar-List-Utils-1.23/t/first.t
Scalar-List-Utils-1.23/t/isvstring.t
Scalar-List-Utils-1.23/t/lln.t
Scalar-List-Utils-1.23/t/max.t
Scalar-List-Utils-1.23/t/maxstr.t
Scalar-List-Utils-1.23/t/min.t
Scalar-List-Utils-1.23/t/minstr.t
Scalar-List-Utils-1.23/t/openhan.t
Scalar-List-Utils-1.23/t/p_00version.t
Scalar-List-Utils-1.23/t/p_blessed.t
Scalar-List-Utils-1.23/t/p_first.t
Scalar-List-Utils-1.23/t/p_lln.t
Scalar-List-Utils-1.23/t/p_max.t
Scalar-List-Utils-1.23/t/p_maxstr.t
Scalar-List-Utils-1.23/t/p_min.t
Scalar-List-Utils-1.23/t/p_minstr.t
Scalar-List-Utils-1.23/t/p_openhan.t
Scalar-List-Utils-1.23/t/p_readonly.t
Scalar-List-Utils-1.23/t/p_reduce.t
Scalar-List-Utils-1.23/t/p_refaddr.t
Scalar-List-Utils-1.23/t/p_reftype.t
Scalar-List-Utils-1.23/t/p_shuffle.t
Scalar-List-Utils-1.23/t/p_sum.t
Scalar-List-Utils-1.23/t/p_tainted.t
Scalar-List-Utils-1.23/t/proto.t
Scalar-List-Utils-1.23/t/readonly.t
Scalar-List-Utils-1.23/t/reduce.t
Scalar-List-Utils-1.23/t/refaddr.t
Scalar-List-Utils-1.23/t/reftype.t
Scalar-List-Utils-1.23/t/shuffle.t
Scalar-List-Utils-1.23/t/stack-corruption.t
Scalar-List-Utils-1.23/t/sum.t
Scalar-List-Utils-1.23/t/tainted.t
Scalar-List-Utils-1.23/t/weak.t
Scalar-List-Utils-1.23/lib/List/
Scalar-List-Utils-1.23/lib/Scalar/
Scalar-List-Utils-1.23/lib/Scalar/Util/
Scalar-List-Utils-1.23/lib/Scalar/Util.pm
Scalar-List-Utils-1.23/lib/Scalar/Util/PP.pm
Scalar-List-Utils-1.23/lib/List/Util/
Scalar-List-Utils-1.23/lib/List/Util.pm
Scalar-List-Utils-1.23/lib/List/Util/PP.pm
/bin/tar: 4608 バイトを – から読み込み
Scalar-List-Utils-1.23/lib/List/Util/XS.pm
CPAN.pm: Going to build G/GB/GBARR/Scalar-List-Utils-1.23.tar.gz
Checking if your kit is complete…
Looks good
Writing Makefile for List::Util
cp lib/List/Util/XS.pm blib/lib/List/Util/XS.pm
cp lib/Scalar/Util/PP.pm blib/lib/Scalar/Util/PP.pm
cp lib/List/Util/PP.pm blib/lib/List/Util/PP.pm
cp lib/List/Util.pm blib/lib/List/Util.pm
cp lib/Scalar/Util.pm blib/lib/Scalar/Util.pm
/usr/bin/perl /usr/lib/perl5/5.8.8/ExtUtils/xsubpp -typemap /usr/lib/perl5/5.8.8/ExtUtils/typemap ListUtil.xs > ListUtil.xsc && mv ListUtil.xsc ListUtil.c
gcc -c -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector –param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -DVERSION=\"1.23\" -DXS_VERSION=\"1.23\" -fPIC "-I/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE" -DPERL_EXT ListUtil.c
ListUtil.c: In function ‘XS_List__Util_min’:
ListUtil.xs:144: 警告: ‘retval’ may be used uninitialized in this function
Running Mkbootstrap for List::Util ()
chmod 644 Util.bs
rm -f blib/arch/auto/List/Util/Util.so
gcc -shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector –param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -L/usr/local/lib ListUtil.o -o blib/arch/auto/List/Util/Util.so \
\
chmod 755 blib/arch/auto/List/Util/Util.so
cp Util.bs blib/arch/auto/List/Util/Util.bs
chmod 644 blib/arch/auto/List/Util/Util.bs
Manifying blib/man3/List::Util::XS.3pm
Manifying blib/man3/List::Util.3pm
Manifying blib/man3/Scalar::Util.3pm
/usr/bin/make — OK
Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, ‘blib/lib’, ‘blib/arch’)" t/*.t
t/00version………..ok
t/blessed………….ok
t/dualvar………….ok
t/expfail………….ok
t/first……………ok
2/21 skipped: Poor man’s MULTICALL can’t cope
t/isvstring………..ok
t/lln……………..ok
t/max……………..ok
t/maxstr…………..ok
t/min……………..ok
t/minstr…………..ok
t/openhan………….ok
t/p_00version………ok
t/p_blessed………..ok
t/p_first………….ok
t/p_lln……………ok
t/p_max……………ok
t/p_maxstr…………ok
t/p_min……………ok
t/p_minstr…………ok
t/p_openhan………..ok
t/p_readonly……….ok
t/p_reduce…………ok
t/p_refaddr………..ok
t/p_reftype………..ok
t/p_shuffle………..ok
t/p_sum……………ok
t/p_tainted………..ok
t/proto……………ok
t/readonly…………ok
t/reduce…………..ok
2/29 skipped: Poor man’s MULTICALL can’t cope
t/refaddr………….ok
t/reftype………….ok
t/shuffle………….ok
t/stack-corruption….ok
t/sum……………..ok
t/tainted………….ok
t/weak…………….ok
All tests successful, 4 subtests skipped.
Files=38, Tests=475, 1 wallclock secs ( 0.94 cusr + 0.21 csys = 1.15 CPU)
/usr/bin/make test — OK
Running make install
Installing /usr/lib/perl5/5.8.8/i386-linux-thread-multi/auto/List/Util/Util.so
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
Writing /usr/lib/perl5/5.8.8/i386-linux-thread-multi/auto/List/Util/.packlist
Appending installation info to /usr/lib/perl5/5.8.8/i386-linux-thread-multi/perllocal.pod
/usr/bin/make install — OK
cpan> q
Lockfile removed.
[root@rad-xen-vweb7 ~]#
動くようになりました。
[root@rad-xen-vweb7 ~]#
[root@rad-xen-vweb7 ~]# perl -MScalar::Util=weaken -e 42
[root@rad-xen-vweb7 ~]# perl -MScalar::Util -e ‘print Scalar::Util->VERSION’
1.23[root@rad-xen-vweb7 ~]#
めでたしめでたし。
タグ : perlメモ