Please run the following command to find out where the Scalar/Util.pm is being loaded from, and if the corresponding Util.so is found:
$ PERL_CORE=1 tusc ./perl ext/Storable/t/weak.t | grep Util
This must be run from the main build directory, where the perl binary is
located.
The normal output from this - with a fully functioning Scalar::Util -
would look like this:
stat64("./Scalar/Util.pmc", 0x7fffdf30) ............. ... ERR#2 ENOENT
stat64("./Scalar/Util.pm", 0x7fffdeb0) .............. ... ERR#2 ENOENT
stat64("../lib/Scalar/Util.pmc", 0x7fffdf30) ........ ... ERR#2 ENOENT
stat64("../lib/Scalar/Util.pm", 0x7fffdeb0) ......... ... = 0
open("../lib/Scalar/Util.pm", O_RDONLY|0x800, 0666) . ... = 4
stat64("./List/Util.pmc", 0x7fffdf30) ............... ... ERR#2 ENOENT
stat64("./List/Util.pm", 0x7fffdeb0) ................ ... ERR#2 ENOENT
stat64("../lib/List/Util.pmc", 0x7fffdf30) .......... ... ERR#2 ENOENT
stat64("../lib/List/Util.pm", 0x7fffdeb0) ........... ... = 0
open("../lib/List/Util.pm", O_RDONLY|0x800, 0666) ... ... = 4
stat64("../lib/auto/List/Util/Util.so", 0x40011090) . ... = 0
stat64("../lib/auto/List/Util/Util.bs", 0x40011090) . ... = 0
open("../lib/auto/List/Util/Util.so", O_RDONLY, 0) .. ... = 4
open("../lib/auto/List/Util/Util.so", O_RDONLY, 0) .. ... = 4
In case you don't get any output, make sure you can run the
test itself (without tusc), i.e.
$ PERL_CORE=1 ./perl ext/Storable/t/weak.t
Alternatively, you could try to just load the module Scalar::Util and
import weaken (output should be similar to above):
$ tusc ./perl -I./lib -MScalar::Util=weaken -e1 | grep Util
And if you find that you do have a Util.so, you might want
to check whether it has been compiled properly (contains the required symbols):
$ nm ./lib/auto/List/Util/Util.so | grep weak
+
[77] | 0| 0|FUNC |GLOB |0| UNDEF|Perl_sv_rvweak
+en
[102] | 67145504| 384|FUNC |GLOB |0| .text|XS_Scalar__Uti
+l_isweak
[66] | 67145184| 288|FUNC |GLOB |0| .text|XS_Scalar__Uti
+l_weaken
Also (just in case) you could check for other perls:
$ find /opt/perl* -path "*bin/perl"
$ find /opt/perl* -path "*bin/perl" -exec {} -v \; | grep 'is perl'
...because at least the code from Perl's Configure, which
populates @inc_version_list, apparently did find directories for
versions from 5.8.0 all through to 5.8.7. This doesn't
necessarily mean that all those are full installations, but it's at
least a hint that there are - or have been - other versions of
Perl on that machine, which might interfere under some circumstances
(like PERL5LIB being set)...
|