Getting Data::Dumper Object print error - perl

Problem:
I am trying to print the $self object to know the contained data structure like below line and getting the error:
use Data::Dumper;
my $self = shift;
print Dumper($self);
Error:
Can't locate object method "FIRSTKEY" via package "Memoize::Expire" at /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/Data/Dumper.pm line 158
Version Information:
$ perl -MData::Dumper -le 'print Data::Dumper->VERSION';
2.121
$ perl -MMemoize::Expire -le 'print Memoize::Expire->VERSION';
1.03
$ perl -V
Summary of my perl5 (revision 5 version 8 subversion 8) configuration:
Platform:
osname=linux, osvers=2.6.18-53.1.14.el5pae, archname=i386-linux-thread-multi
uname='linux builder16.centos.org 2.6.18-53.1.14.el5pae #1 smp wed mar 5 12:07:47 est 2008 i686 athlon i386 gnulinux '
config_args='-des -Doptimize=-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=5.8.8 -Dmyhostname=localhost -Dperladmin=root#localhost -Dcc=gcc -Dcf_by=Red Hat, Inc. -Dinstallprefix=/usr -Dprefix=/usr -Darchname=i386-linux -Dvendorprefix=/usr -Dsiteprefix=/usr -Duseshrplib -Dusethreads -Duseithreads -Duselargefiles -Dd_dosuid -Dd_semctl_semun -Di_db -Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio -Dinstallusrbinperl=n -Ubincompat5005 -Uversiononly -Dpager=/usr/bin/less -isr -Dd_gethostent_r_proto -Ud_endhostent_r_proto -Ud_sethostent_r_proto -Ud_endprotoent_r_proto -Ud_setprotoent_r_proto -Ud_endservent_r_proto -Ud_setservent_r_proto -Dinc_version_list=5.8.7 5.8.6 5.8.5 -Dscriptdir=/usr/bin'
hint=recommended, useposix=true, d_sigaction=define
usethreads=define use5005threads=undef useithreads=define usemultiplicity=define
useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=undef use64bitall=undef uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='gcc', ccflags ='-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',
optimize='-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',
cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -I/usr/include/gdbm'
ccversion='', gccversion='4.1.2 20071124 (Red Hat 4.1.2-42)', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=4, prototype=define
Linker and Libraries:
ld='gcc', ldflags =' -L/usr/local/lib'
libpth=/usr/local/lib /lib /usr/lib
libs=-lresolv -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc
perllibs=-lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
libc=/lib/libc-2.5.so, so=so, useshrplib=true, libperl=libperl.so
gnulibc_version='2.5'
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E -Wl,-rpath,/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE'
cccdlflags='-fPIC', lddlflags='-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'
Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY PERL_IMPLICIT_CONTEXT
PERL_MALLOC_WRAP USE_ITHREADS USE_LARGE_FILES
USE_PERLIO USE_REENTRANT_API
Built under linux
Compiled at Sep 17 2008 13:37:09
#INC:
/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.8
/usr/lib/perl5/site_perl/5.8.7
/usr/lib/perl5/site_perl/5.8.6
/usr/lib/perl5/site_perl/5.8.5
/usr/lib/perl5/site_perl
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.8
/usr/lib/perl5/vendor_perl/5.8.7
/usr/lib/perl5/vendor_perl/5.8.6
/usr/lib/perl5/vendor_perl/5.8.5
/usr/lib/perl5/vendor_perl
/usr/lib/perl5/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/5.8.8
I can not update perl version, I have tried updating Data::Dumper with cpan install Data::Dumper;.
Which shows this /usr/bin/make test -- OK after installation.
But when I check again the version remains the same.
So Is there any way I can solve this problem?
Or I could use some other way to print the desired Object?

This reproduces the Can't locate object method "FIRSTKEY" via package "Memoize::Expire" error (tested on Perl 5.26):
use Memoize::Expire;
use Data::Dumper;
tie my %cache => 'Memoize::Expire';
print Dumper(\%cache);
I think this could be considered a bug in Memoize::Expire: it doesn't provide the FIRSTKEY and NEXTKEY implementations that Data::Dumper needs. You may want to report a bug in the issue tracker, although unfortunately the distribution seems unmaintained for several years. (You might also want to consider your use of Memoize::Expire in the first place - what are you using it for, do you really need it, etc.)
Since Data::Dumper is typically used for debugging, my question would be if you really need to see the contents of the Memoize::Expire object. If so, you might consider switching to Data::Dump because it provides Data::Dump::Filtered. While the following will not provide a data structure that can be evaled back to Perl, it will hopefully give you useful debug output:
use warnings;
use strict;
use Memoize::Expire;
use Data::Dump;
use Data::Dump::Filtered 'add_dump_filter';
add_dump_filter sub {
my ($ctx, $ref) = #_;
if ($ctx->reftype eq 'HASH' && defined(tied(%$ref))) {
return { comment=>"hashref tied to:",
object=>tied(%$ref) };
}
return undef; # normal processing
};
tie my %cache => 'Memoize::Expire';
$cache{x}='y';
dd \%cache;
Output:
# hashref tied to:
bless({
C => { x => "Z\x8C\25b\0\0\0\0\xFF\xFFy" },
LIFETIME => 0,
NUM_USES => 0,
}, "Memoize::Expire")
Finally, here's an IMO ugly hack quick fix with implementations borrowed from Tie::StdHash. This should get rid of the error but will however not show you the internal structure of the object:
sub Memoize::Expire::FIRSTKEY { my $a = scalar keys %{$_[0]{C}}; each %{$_[0]{C}} }
sub Memoize::Expire::NEXTKEY { each %{$_[0]{C}} }

$self is a tie'd object with some of the tied methods unimplemented. A workaround to dumping the tied object is to dump the underlying object
print Dumper(tied $self)
or in cases where it is ambiguous whether the object is tied or not
print Dumper(tied $self || $self)

Related

site/perl directory is missing in perl #INC search path

I am developing a bunch of Perl scripts for my workmates and me.
To ease distribution, Perl itself resides on a network path and is used from there directly using this header:
#rem = '--*-Perl-*--
#echo off
\\network\path\to\Perl\bin\perl.exe -x -S %0 %*
goto EndOfPerl
#rem ';
#!perl
#line 8
#####################################################################
This worked fine (and still does!), but a collegue needed a standalone version, so we copied the complete network installation of Perl to the local hard disk.
After changing the header to use the local location we get the message:
Can't locate Tk.pm in #INC (#INC contains: C:/tools/Perl/5.16.1/lib .) at Test.cmd line 30
Now I always thought #INC was compiled into Perl. At least, it shouldn't change by simply copying Perl to another location.
There is a slight difference in Perl -V output when started locally.
Here is what I get when started from the network:
Summary of my perl5 (revision 5 version 16 subversion 1) configuration:
Platform:
osname=MSWin32, osvers=5.2, archname=MSWin32-x86-multi-thread
uname=''
config_args='undef'
hint=recommended, useposix=true, d_sigaction=undef
useithreads=define, usemultiplicity=define
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=undef, use64bitall=undef, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cl', ccflags ='-nologo -GF -W3 -MD -Zi -DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -DPERL_TEXTMODE_SCRIPTS -DUSE_SITECUSTOMIZE -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -D_USE_32BIT_TIME_T',
optimize='-MD -Zi -DNDEBUG -O1',
cppflags='-DWIN32'
ccversion='12.00.8168', gccversion='', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=8
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='__int64',
lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='link', ldflags ='-nologo -nodefaultlib -debug -opt:ref,icf
-libpath:"C:\Perl\lib\CORE" -machine:x86'
libpth=\lib
libs=oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib
winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib
perllibs=oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib
libc=msvcrt.lib, so=dll, useshrplib=true, libperl=perl516.lib
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
cccdlflags=' ', lddlflags='-dll -nologo -nodefaultlib -debug -opt:ref,icf -libpath:"C:\Perl\lib\CORE" -machine:x86'
Characteristics of this binary (from libperl):
Compile-time options: HAS_TIMES HAVE_INTERP_INTERN MULTIPLICITY
PERLIO_LAYERS PERL_DONT_CREATE_GVSV
PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS
PERL_MALLOC_WRAP PERL_PRESERVE_IVUV PL_OP_SLAB_ALLOC
USE_ITHREADS USE_LARGE_FILES USE_LOCALE
USE_LOCALE_COLLATE USE_LOCALE_CTYPE
USE_LOCALE_NUMERIC USE_PERLIO USE_PERL_ATOF
USE_SITECUSTOMIZE
Locally applied patches:
ActivePerl Build 1601 [296175]
Built under MSWin32
Compiled at Aug 30 2012 20:08:55
#INC:
//network/path/to/Perl/site/lib
//network/path/to/Perl/Perl/lib
.
And here is the output when executed from the local drive:
<snip>
Compiled at Aug 30 2012 20:08:55
%ENV:
PERL_DIR="C:\tools\Perl\5.16.1"
#INC:
C:/tools/Perl/5.16.1/lib
.
The site/lib part is gone!
Any ideas, anyone?

How to fix this Perl Library Missing Error: "Can't locate auto/threads/error.al in #INC"?

I am running a trinity RNASeq Assembly software on Ubuntu server and the following error is occuring for Pair-end reads input.
can't locate auto/threads/error.al in #INC (#INC contains:
I checked for threads library and it's already in the perl library.
Any thoughts on this?
$ perl -V
Summary of my perl5 (revision 5 version 8 subversion 8) configuration:
Platform:
osname=linux, osvers=2.6.9-42.0.3.elsmp, archname=x86_64-linux-thread-multi
uname='linux builder6.centos.org 2.6.9-42.0.3.elsmp #1 smp fri oct 6 06:28:26 cdt 2006 x86_64 x86_64 x86_64 gnulinux '
config_args='-des -Doptimize=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Dversion=5.8.8 -Dmyhostname=localhost -Dperladmin=root#localhost -Dcc=gcc -Dcf_by=Red Hat, Inc. -Dinstallprefix=/usr -Dprefix=/usr -Dlibpth=/usr/local/lib64
/lib64 /usr/lib64 -Dprivlib=/usr/lib/perl5/5.8.8
-Dsitelib=/usr/lib/perl5/site_perl/5.8.8 -Dvendorlib=/usr/lib/perl5/vendor_perl/5.8.8 -Darchlib=/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi -Dsitearch=/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi -Dvendorarch=/usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi
-Darchname=x86_64-linux -Dvendorprefix=/usr -Dsiteprefix=/usr -Duseshrplib -Dusethreads -Duseithreads -Duselargefiles -Dd_dosuid -Dd_semctl_semun -Di_db -Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio -Dinstallusrbinperl=n -Ubincompat5005 -Uversiononly -Dpager=/usr/bin/less -isr -Dd_gethostent_r_proto -Ud_endhostent_r_proto -Ud_sethostent_r_proto -Ud_endprotoent_r_proto -Ud_setprotoent_r_proto -Ud_endservent_r_proto -Ud_setservent_r_proto -Dinc_version_list=5.8.7 5.8.6 5.8.5 -Dscriptdir=/usr/bin'
hint=recommended, useposix=true, d_sigaction=define
usethreads=define use5005threads=undef useithreads=define usemultiplicity=define
useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=define use64bitall=define uselongdouble=undef
usemymalloc=n, bincompat5005=undef Compiler:
cc='gcc', ccflags ='-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',
optimize='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic',
cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -I/usr/include/gdbm'
ccversion='', gccversion='4.1.1 20070105 (Red Hat 4.1.1-52)', gccosandvers=''
intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=8, prototype=define Linker and Libraries:
ld='gcc', ldflags =''
libpth=/usr/local/lib64 /lib64 /usr/lib64
libs=-lresolv -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc
perllibs=-lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
libc=, so=so, useshrplib=true, libperl=libperl.so
gnulibc_version='2.5' Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E -Wl,-rpath,/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE'
cccdlflags='-fPIC', lddlflags='-shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'
Characteristics of this binary (from libperl): Compile-time
options: MULTIPLICITY PERL_IMPLICIT_CONTEXT
PERL_MALLOC_WRAP USE_64_BIT_ALL USE_64_BIT_INT
USE_ITHREADS USE_LARGE_FILES USE_PERLIO
USE_REENTRANT_API Built under linux Compiled at Nov 8 2007 06:49:06 %ENV:
PERL5LIB="/fs/home/anuphap/usr/lib/perl5:/fs/home/anuphap/usr/lib/perl5/site_perl:/fs/home/anuphap/usr/lib64/perl5:/fs/home/anuphap/usr/lib64/perl5/site_perl"
#INC:
/fs/home/anuphap/usr/lib/perl5/5.8.8
/fs/home/anuphap/usr/lib/perl5
/fs/home/anuphap/usr/lib/perl5/site_perl/5.8.8/x86_64-linux-thread-multi
/fs/home/anuphap/usr/lib/perl5/site_perl/5.8.8
/fs/home/anuphap/usr/lib/perl5/site_perl
/fs/home/anuphap/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi
/fs/home/anuphap/usr/lib64/perl5/5.8.8
/fs/home/anuphap/usr/lib64/perl5
/fs/home/anuphap/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi
/fs/home/anuphap/usr/lib64/perl5/site_perl/5.8.8
/fs/home/anuphap/usr/lib64/perl5/site_perl
/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi
/usr/lib64/perl5/site_perl/5.8.7/x86_64-linux-thread-multi
/usr/lib64/perl5/site_perl/5.8.6/x86_64-linux-thread-multi
/usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.8
/usr/lib/perl5/site_perl/5.8.7
/usr/lib/perl5/site_perl/5.8.6
/usr/lib/perl5/site_perl/5.8.5
/usr/lib/perl5/site_perl
/usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi
/usr/lib64/perl5/vendor_perl/5.8.7/x86_64-linux-thread-multi
/usr/lib64/perl5/vendor_perl/5.8.6/x86_64-linux-thread-multi
/usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.8
/usr/lib/perl5/vendor_perl/5.8.7
/usr/lib/perl5/vendor_perl/5.8.6
/usr/lib/perl5/vendor_perl/5.8.5
/usr/lib/perl5/vendor_perl
/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi
/usr/lib/perl5/5.8.8
You need to install a version of Perl that has threads support. How to install:
wget http://www.cpan.org/src/5.0/perl-5.20.2.tar.gz
tar -xzf perl-5.20.2.tar.gz
cd perl-5.20.2
./Configure -des -Dprefix=$HOME/localperl
make
make test
make install
Read both INSTALL and README.yoursystem for more detailed information.

My Perl 5.14 missing NDBM_File

I have some old Perl code that I am trying to get working with a build of Perl 5.14.1 that I built. But for some reason I do not have the Perl Module NDBM_File.
$ perl -MNDBM_File -e1;
Can't locate NDBM_File.pm in #INC (#INC contains: /apps/perl-5.14.1/lib/dev_perl/x86_64-linux-thread-multi /apps/perl-5.14.1/lib/dev_perl /apps/perl-5.14.1/lib/vendor_perl/5.14.1/x86_64-linux-thread-multi /apps/perl-5.14.1/lib/vendor_perl/5.14.1 /apps/perl-5.14.1/lib/5.14.1/x86_64-linux-thread-multi /apps/perl-5.14.1/lib/5.14.1 /apps/perl-5.14.1/lib/site_perl .).
BEGIN failed--compilation aborted.
Here's is the perl -V output I get ...
Summary of my perl5 (revision 5 version 14 subversion 1) configuration:
Platform:
osname=linux, osvers=2.6.32-220.17.1.el6.x86_64, archname=x86_64-linux-thread-multi
uname='linux myhost.mydomain 2.6.32-220.17.1.el6.x86_64 #1 smp thu apr 26 13:37:13 edt 2012 x86_64 x86_64 x86_64 gnulinux '
config_args='-Dcc=gcc -A ccflags=-fPIC -Dprefix=/apps/perl-5.14.1 -Dsitelib=/apps/perl-5.14.1/lib/dev_perl -Dvendorprefix=/apps/perl-5.14.1 -Dotherlibdirs=/apps/perl-5.14.1/lib/site_perl -Duseithreads=define -de'
hint=recommended, useposix=true, d_sigaction=define
useithreads=define, usemultiplicity=define
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=define, use64bitall=define, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fPIC -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
optimize='-O2',
cppflags='-D_REENTRANT -D_GNU_SOURCE -fPIC -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
ccversion='', gccversion='4.4.6 20110731 (Red Hat 4.4.6-3)', gccosandvers=''
intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='gcc', ldflags =' -fstack-protector -L/usr/local/lib'
libpth=/usr/local/lib /lib/../lib64 /usr/lib/../lib64 /lib /usr/lib /lib64 /usr/lib64 /usr/local/lib64
libs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
libc=/lib/libc-2.12.so, so=so, useshrplib=false, libperl=libperl.a
gnulibc_version='2.12'
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
cccdlflags='-fPIC', lddlflags='-shared -O2 -L/usr/local/lib -fstack-protector'
Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP
PERL_PRESERVE_IVUV USE_64_BIT_ALL USE_64_BIT_INT
USE_ITHREADS USE_LARGE_FILES USE_PERLIO USE_PERL_ATOF
USE_REENTRANT_API
Built under linux
Compiled at Aug 27 2012 14:20:48
#INC:
/apps/perl-5.14.1/lib/dev_perl/x86_64-linux-thread-multi
/apps/perl-5.14.1/lib/dev_perl
/apps/perl-5.14.1/lib/vendor_perl/5.14.1/x86_64-linux-thread-multi
/apps/perl-5.14.1/lib/vendor_perl/5.14.1
/apps/perl-5.14.1/lib/5.14.1/x86_64-linux-thread-multi
/apps/perl-5.14.1/lib/5.14.1
/apps/perl-5.14.1/lib/site_perl
.
I do have a this file ...
/apps/perl-5.14.1/lib/5.14.1/Memoize/NDBM_File.pm
... but in does a "use NDBM_File" which fails.
Did I build my Perl wrong?
From https://metacpan.org/module/AnyDBM_File:
                        odbm    ndbm    sdbm    gdbm    bsd-db
                        ----    ----    ----    ----    ------
Linkage comes w/ perl   yes     yes     yes     yes     yes
Src comes w/ perl       no      no      yes     no      no
...
Which means that the only DBM backend supported "out-of-box" is SDBM_File.
I guess you'll have to install the libgdbm-dev package and recompile your Perl.

Building Perl for OS X - Architecture-Specific Compile Options

Thanks to a suggestion from Chas. Owens, I have been having fun playing with Perlbrew to have various Perl builds in my home directory. My question is more generally on building a newer Perl under OS X however.
I have OS X 10.6.4 Snow Leopard running on a very recent MacBook Pro. After a small diversion getting gcc properly setup under Snow Leopard, I have built and run Perl 5.12.1 in my home directory just using the default options. It passes the Perl test harness.
Perlbrew allows Perl to be built with OS and platform specific flags. These are the -D -U -A options to the Perl configure script. The perlmacosx read me file hasn't been updated in 4 years, so that is not very helpful anymore.
I am tempted to just ape Apple's switches used in the system Perl v 5.10.0 (which you can be seen for your particular Perl by typing [path_to_specific_perl]/perl -V or /usr/bin/perl for the system in most cases...) Other than the -Dprefix=/usr which would be different for a different root for the new Perl build, what should I use?
(eyeballing) Here are the main differences between the Apple compilation options and the default:
config_args:
Apple: -ds -e
Default: -de
-D: =======================
Apple: useithreads=define, usemultiplicity=define
Default: useithreads=undef, usemultiplicity=undef
Compiler: =================
Apple: optimize='-Os'
Default: optimize='-O3'
Apple: -arch x86_64 -arch i386 -arch ppc
Default: none specified
Apple: -g -pipe
Default these optimizations are not set
Apple not set
Default -no-cpp-precomp
Linker: ================
Apple: useshrplib=true, libperl=libperl.dylib
Default: useshrplib=false, libperl=libperl.a
Characteristics of libperl: =============
Apple MULTIPLICITY PERL_IMPLICIT_CONTEXT USE_ITHREADS USE_REENTRANT_API
Default PERL_MALLOC_WRAP USE_PERL_ATOF
Another difference is the Apple Perl libperl is a dynaloader, the default build is statically linked.
So, questions:
Which -D -U -A switches should I use to build a local copy of Perl on OS X 10.6+? I don't think I need a fat binary like the Apple version, and I don't know if I should do a dynaloader version. Mainly I am looking for the suggested switches for optimization and suggested characteristics of resulting libperl.
Should I do a dynaloader version? (ie, in the OS X sense of Dynamic Libraries...)
The system Perl is /usr/bin/perl and I don't want to change it. Do I change the sheebang in scripts to point to the Perlbrew version of Perl? That means my sheebang would be `/Users/andrew/perl5/perl.' Do I change my path to point there? What are others doing in this regard? What is considered "best practice"?
When I run Perlbrew, I get the warning v-string in use/require non-portable at ./perlbrew line 818. Line 818 in Perlbrew is use 5.8.0; Shouldn't that line be use 5.008_000?
Edit
Thanks to Jonathan Leffler, I least had some Perls to look at. Rather than get too deep into it, I just took the defaults in most cases, added threads, and it seems to work OK. Now I have Perlbrew's installed with several Perl and I have left the system Perl at 5.10. I use /usr/bin/env perl on the sheebang to have future-proofish code.
The best I can offer is the output of 'perl -V' for each of my homebrew collection of 5.1x versions of Perl - some 32-bit, some 64-bit. I've omitted the PowerPC builds (from the days before I had an Intel Mac).
drwxr-xr-x 8 jleffler staff 272 Aug 1 2009 v5.10.0
drwxr-xr-x 8 jleffler staff 272 Nov 8 2009 v5.10.1
drwxr-xr-x 6 jleffler staff 204 Oct 26 2009 v5.10.1-64
drwxr-xr-x 6 jleffler staff 204 Jun 23 09:36 v5.12.1
drwxr-xr-x 5 jleffler staff 170 Jun 17 21:14 v5.12.1-32bit
drwxr-xr-x 5 jleffler staff 170 Aug 30 15:02 v5.13.4
I don't build with threading or for multiplicity. I do build with dynamic loading; I use the dlopen version - it is the default suggested. The machine gets different names depending on where it is connected to the network; this shows up in build machine names.
5.10.0
Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
Platform:
osname=darwin, osvers=9.7.0, archname=darwin-64int-2level
uname='darwin osiris.sanjose.ibm.com 9.7.0 darwin kernel version 9.7.0: tue mar 31 22:52:17 pdt 2009; root:xnu-1228.12.14~1release_i386 i386 '
config_args='-Duse64bitint'
hint=recommended, useposix=true, d_sigaction=define
useithreads=undef, usemultiplicity=undef
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=define, use64bitall=undef, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -pipe -I/usr/local/include -I/usr/gnu/include -I/usr/GNU/include',
optimize='-O3',
cppflags='-no-cpp-precomp -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -pipe -I/usr/local/include -I/usr/gnu/include -I/usr/GNU/include'
ccversion='', gccversion='4.0.1 (Apple Inc. build 5493)', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=12345678
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='env MACOSX_DEPLOYMENT_TARGET=10.3 cc', ldflags =' -L/usr/local/lib -L/usr/gnu/lib -L/usr/GNU/lib'
libpth=/usr/local/lib /usr/gnu/lib /usr/GNU/lib /usr/lib
libs=-ldbm -ldl -lm -lutil -lc
perllibs=-ldl -lm -lutil -lc
libc=/usr/lib/libc.dylib, so=dylib, useshrplib=false, libperl=libperl.a
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup -L/usr/local/lib -L/usr/gnu/lib -L/usr/GNU/lib'
Characteristics of this binary (from libperl):
Compile-time options: PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP USE_64_BIT_INT
USE_LARGE_FILES USE_PERLIO
Built under darwin
Compiled at Jul 14 2009 10:09:56
#INC:
/Users/jleffler/perl/v5.10.0/lib/5.10.0/darwin-64int-2level
/Users/jleffler/perl/v5.10.0/lib/5.10.0
/Users/jleffler/perl/v5.10.0/lib/site_perl/5.10.0/darwin-64int-2level
/Users/jleffler/perl/v5.10.0/lib/site_perl/5.10.0
.
5.10.1 (32-bit)
Summary of my perl5 (revision 5 version 10 subversion 1) configuration:
Platform:
osname=darwin, osvers=9.8.0, archname=darwin-2level
uname='darwin osiris.local 9.8.0 darwin kernel version 9.8.0: wed jul 15 16:55:01 pdt 2009; root:xnu-1228.15.4~1release_i386 i386 '
config_args=''
hint=recommended, useposix=true, d_sigaction=define
useithreads=undef, usemultiplicity=undef
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=undef, use64bitall=undef, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc -m32', ccflags ='-fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/usr/gnu/include',
optimize='-O3',
cppflags='-no-cpp-precomp -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/usr/gnu/include'
ccversion='', gccversion='4.0.1 (Apple Inc. build 5493)', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='env MACOSX_DEPLOYMENT_TARGET=10.3 cc -m32', ldflags =' -fstack-protector -L/usr/local/lib -L/usr/gnu/lib'
libpth=/usr/local/lib /usr/gnu/lib /usr/lib
libs=-ldbm -ldl -lm -lutil -lc
perllibs=-ldl -lm -lutil -lc
libc=/usr/lib/libc.dylib, so=dylib, useshrplib=false, libperl=libperl.a
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup -L/usr/local/lib -L/usr/gnu/lib -fstack-protector'
Characteristics of this binary (from libperl):
Compile-time options: PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP
USE_LARGE_FILES USE_PERLIO
Built under darwin
Compiled at Sep 3 2009 07:26:44
#INC:
/Users/jleffler/perl/v5.10.1/lib/5.10.1/darwin-2level
/Users/jleffler/perl/v5.10.1/lib/5.10.1
/Users/jleffler/perl/v5.10.1/lib/site_perl/5.10.1/darwin-2level
/Users/jleffler/perl/v5.10.1/lib/site_perl/5.10.1
.
5.10.1 64-bit
Summary of my perl5 (revision 5 version 10 subversion 1) configuration:
Platform:
osname=darwin, osvers=9.8.0, archname=darwin-2level
uname='darwin osiris.sanjose.ibm.com 9.8.0 darwin kernel version 9.8.0: wed jul 15 16:55:01 pdt 2009; root:xnu-1228.15.4~1release_i386 i386 '
config_args=''
hint=recommended, useposix=true, d_sigaction=define
useithreads=undef, usemultiplicity=undef
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=define, use64bitall=define, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc -m64', ccflags ='-fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/usr/gnu/include',
optimize='-O3',
cppflags='-no-cpp-precomp -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/usr/gnu/include'
ccversion='', gccversion='4.0.1 (Apple Inc. build 5493)', gccosandvers=''
intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='env MACOSX_DEPLOYMENT_TARGET=10.3 cc -m64', ldflags =' -fstack-protector -L/usr/local/lib -L/usr/gnu/lib'
libpth=/usr/local/lib /usr/gnu/lib /usr/lib
libs=-ldbm -ldl -lm -lutil -lc
perllibs=-ldl -lm -lutil -lc
libc=/usr/lib/libc.dylib, so=dylib, useshrplib=false, libperl=libperl.a
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup -L/usr/local/lib -L/usr/gnu/lib -fstack-protector'
Characteristics of this binary (from libperl):
Compile-time options: PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP USE_64_BIT_ALL
USE_64_BIT_INT USE_LARGE_FILES USE_PERLIO
Built under darwin
Compiled at Sep 3 2009 10:12:54
#INC:
/Users/jleffler/perl/v5.10.1-64/lib/5.10.1/darwin-2level
/Users/jleffler/perl/v5.10.1-64/lib/5.10.1
/Users/jleffler/perl/v5.10.1-64/lib/site_perl/5.10.1/darwin-2level
/Users/jleffler/perl/v5.10.1-64/lib/site_perl/5.10.1
.
5.12.1 64-bit
Summary of my perl5 (revision 5 version 12 subversion 1) configuration:
Platform:
osname=darwin, osvers=10.3.0, archname=darwin-2level
uname='darwin dyn744040.sanjose.ibm.com 10.3.0 darwin kernel version 10.3.0: fri feb 26 11:58:09 pst 2010; root:xnu-1504.3.12~1release_i386 i386 '
config_args=''
hint=recommended, useposix=true, d_sigaction=define
useithreads=undef, usemultiplicity=undef
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=define, use64bitall=define, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/usr/gnu/include -I/usr/GNU/include',
optimize='-O3',
cppflags='-no-cpp-precomp -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/usr/gnu/include -I/usr/GNU/include'
ccversion='', gccversion='4.2.1 (Apple Inc. build 5659)', gccosandvers=''
intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='env MACOSX_DEPLOYMENT_TARGET=10.3 cc', ldflags =' -fstack-protector -L/usr/local/lib -L/usr/gnu/lib'
libpth=/usr/local/lib /usr/gnu/lib /usr/lib
libs=-ldbm -ldb -ldl -lm -lutil -lc
perllibs=-ldl -lm -lutil -lc
libc=/usr/lib/libc.dylib, so=dylib, useshrplib=false, libperl=libperl.a
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup -L/usr/local/lib -L/usr/gnu/lib -fstack-protector'
Characteristics of this binary (from libperl):
Compile-time options: PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP USE_64_BIT_ALL
USE_64_BIT_INT USE_LARGE_FILES USE_PERLIO
USE_PERL_ATOF
Built under darwin
Compiled at Jun 8 2010 15:36:47
#INC:
/Users/jleffler/Perl/v5.12.1/lib/perl5/site_perl/5.12.1/darwin-2level
/Users/jleffler/Perl/v5.12.1/lib/perl5/site_perl/5.12.1
/Users/jleffler/Perl/v5.12.1/lib/perl5/5.12.1/darwin-2level
/Users/jleffler/Perl/v5.12.1/lib/perl5/5.12.1
.
5.12.1 32-bit
Summary of my perl5 (revision 5 version 12 subversion 1) configuration:
Platform:
osname=darwin, osvers=10.4.0, archname=darwin-2level
uname='darwin osiris-2.local 10.4.0 darwin kernel version 10.4.0: fri apr 23 18:28:53 pdt 2010; root:xnu-1504.7.4~1release_i386 i386 '
config_args=''
hint=recommended, useposix=true, d_sigaction=define
useithreads=undef, usemultiplicity=undef
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=undef, use64bitall=undef, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc -m32', ccflags ='-fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/usr/gnu/include -I/usr/GNU/include',
optimize='-O3',
cppflags='-no-cpp-precomp -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/usr/gnu/include -I/usr/GNU/include'
ccversion='', gccversion='4.2.1 (Apple Inc. build 5659)', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='env MACOSX_DEPLOYMENT_TARGET=10.3 cc -m32', ldflags =' -fstack-protector -L/usr/local/lib -L/usr/gnu/lib -L/usr/GNU/lib'
libpth=/usr/local/lib /usr/gnu/lib /usr/GNU/lib /usr/lib
libs=-ldbm -ldl -lm -lutil -lc
perllibs=-ldl -lm -lutil -lc
libc=/usr/lib/libc.dylib, so=dylib, useshrplib=false, libperl=libperl.a
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup -L/usr/local/lib -L/usr/gnu/lib -L/usr/GNU/lib -fstack-protector'
Characteristics of this binary (from libperl):
Compile-time options: PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP
USE_LARGE_FILES USE_PERLIO USE_PERL_ATOF
Built under darwin
Compiled at Jun 17 2010 20:48:50
#INC:
/Users/jleffler/Perl/v5.12.1-32bit/lib/perl5/site_perl/5.12.1/darwin-2level
/Users/jleffler/Perl/v5.12.1-32bit/lib/perl5/site_perl/5.12.1
/Users/jleffler/Perl/v5.12.1-32bit/lib/perl5/5.12.1/darwin-2level
/Users/jleffler/Perl/v5.12.1-32bit/lib/perl5/5.12.1
.
5.13.4 64-bit
Summary of my perl5 (revision 5 version 13 subversion 4) configuration:
Platform:
osname=darwin, osvers=10.4.0, archname=darwin-2level
uname='darwin dyn9043040112.sanjose.ibm.com 10.4.0 darwin kernel version 10.4.0: fri apr 23 18:28:53 pdt 2010; root:xnu-1504.7.4~1release_i386 i386 '
config_args=''
hint=recommended, useposix=true, d_sigaction=define
useithreads=undef, usemultiplicity=undef
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=define, use64bitall=define, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='gcc -m64', ccflags ='-fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -pipe -fstack-protector -I/usr/gnu64/include -I/usr/local/include',
optimize='-O3',
cppflags='-no-cpp-precomp -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -pipe -fstack-protector -I/usr/gnu64/include -I/usr/local/include'
ccversion='', gccversion='4.2.1 (Apple Inc. build 5664)', gccosandvers=''
intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='env MACOSX_DEPLOYMENT_TARGET=10.3 cc', ldflags ='-fstack-protector -L/usr/gnu64/lib -L/usr/local/lib'
libpth=/usr/gnu64/lib /usr/lib /usr/local/lib
libs=-ldbm -ldb -ldl -lm -lutil -lc
perllibs=-ldl -lm -lutil -lc
libc=/usr/lib/libc.dylib, so=dylib, useshrplib=false, libperl=libperl.a
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup -L/usr/gnu64/lib -L/usr/local/lib -fstack-protector'
Characteristics of this binary (from libperl):
Compile-time options: PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP USE_64_BIT_ALL
USE_64_BIT_INT USE_LARGE_FILES USE_PERLIO
USE_PERL_ATOF
Built under darwin
Compiled at Aug 30 2010 14:36:39
#INC:
/Users/jleffler/perl/v5.13.4/lib/site_perl/5.13.4/darwin-2level
/Users/jleffler/perl/v5.13.4/lib/site_perl/5.13.4
/Users/jleffler/perl/v5.13.4/lib/5.13.4/darwin-2level
/Users/jleffler/perl/v5.13.4/lib/5.13.4
.

Why does perl crash with "*** glibc detected *** perl: munmap_chunk(): invalid pointer"?

#!/usr/bin/env perl
use warnings;
use strict;
use 5.012;
use XML::LibXML::Reader;
my $reader = XML::LibXML::Reader->new( location => 'http://www.heise.de/' ) or die $!;
while ( $reader->read ) {
say $reader->name;
}
At the end of the output from this script I get this error-messages:
* glibc detected * perl: munmap_chunk(): invalid pointer: 0x0000000000b362e0 ***
======= Backtrace: =========
/lib64/libc.so.6[0x7fb84952fc76]
...
======= Memory map: ========
00400000-0053d000 r-xp 00000000 08:01 182002 /usr/local/bin/perl
...
Is this due a bug?
perl -V:
Summary of my perl5 (revision 5 version 12 subversion 0) configuration:
Platform:
osname=linux, osvers=2.6.31.12-0.2-desktop, archname=x86_64-linux
uname='linux linux1 2.6.31.12-0.2-desktop #1 smp preempt 2010-03-16 21:25:39 +0100 x86_64 x86_64 x86_64 gnulinux '
config_args='-Dnoextensions=ODBM_File'
hint=recommended, useposix=true, d_sigaction=define
useithreads=undef, usemultiplicity=undef
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=define, use64bitall=define, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
optimize='-O2',
cppflags='-fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
ccversion='', gccversion='4.4.1 [gcc-4_4-branch revision 150839]', gccosandvers=''
intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
libpth=/usr/local/lib /lib /usr/lib /lib64 /usr/lib64 /usr/local/lib64
libs=-lnsl -ldl -lm -lcrypt -lutil -lc
perllibs=-lnsl -ldl -lm -lcrypt -lutil -lc
libc=/lib/libc-2.10.1.so, so=so, useshrplib=false, libperl=libperl.a
gnulibc_version='2.10.1'
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
cccdlflags='-fPIC', lddlflags='-shared -O2 -L/usr/local/lib -fstack-protector'
Characteristics of this binary (from libperl):
Compile-time options: PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP USE_64_BIT_ALL
USE_64_BIT_INT USE_LARGE_FILES USE_PERLIO
USE_PERL_ATOF
Built under linux
Compiled at Apr 15 2010 13:25:46
#INC:
/usr/local/lib/perl5/site_perl/5.12.0/x86_64-linux
/usr/local/lib/perl5/site_perl/5.12.0
/usr/local/lib/perl5/5.12.0/x86_64-linux
/usr/local/lib/perl5/5.12.0
.
Hope, this Debian Bug report #479698 is answer of your question.