A piggy bank of commands, fixes, succinct reviews, some mini articles and technical opinions from a (mostly) Perl developer.

Can't install recent Perl: too few arguments to function ‘dbmclose’

When I tried to install perl 5.16.2 or perl 5.20.0:

wget http://www.cpan.org/src/5.0/perl-5.20.0.tar.gz
tar -xpvzf perl-5.20.0.tar.gz
cd perl-5.20.0
sh Configure -Dprefix='/opt' -de
make
...
make[1]: Entering directory `/opt/dweb/home/shepwil/src/perl-5.20.0/ext/ODBM_File'
cp ODBM_File.pm ../../lib/ODBM_File.pm
Running Mkbootstrap for ODBM_File ()
chmod 644 ODBM_File.bs
../../miniperl "-I../../lib" "-I../../lib" ../../lib/ExtUtils/xsubpp -noprototypes -typemap ../../lib/ExtUtils/typemap -typemap typemap  ODBM_File.xs > ODBM_File.xsc && mv ODBM_File.xsc ODBM_File.c
cc -c   -fwrapv -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2   -DVERSION=\"1.12\" -DXS_VERSION=\"1.12\" -fPIC "-I../.."   ODBM_File.c
ODBM_File.xs: In function ‘XS_ODBM_File_DESTROY’:
ODBM_File.xs:128: error: too few arguments to function ‘dbmclose’
make[1]: *** [ODBM_File.o] Error 1
make[1]: Leaving directory `/opt/dweb/home/shepwil/src/perl-5.20.0/ext/ODBM_File'
Unsuccessful make(ext/ODBM_File): code=512 at make_ext.pl line 561.
make: *** [lib/auto/ODBM_File/ODBM_File.so] Error 25

The solution:

sudo diff /usr/include/dbm.h.patched /usr/include/dbm.h
62c62,63
> extern int    dbmclose __P((DBM *));
---
< /* extern int dbmclose __P((DBM *));*/
< extern int    dbmclose __P((void));

sudo cp usr/include/dbm.h.patched /usr/include/dbm.h

(source)