Please hack on t/50dbm.t to print @INC: - before it's edited in the BEGIN block - after it's edited in the BEGIN block - and before the script exits.
If you see .../5.6.1/i386-freebsd appear, which it ought to somewhere, then keep hacking to narrow down where that happens.
Well, it appears to be everywhere:
% prove t/50dbm.t
t/50dbm....# BEFORE EDIT:
# [/usr/local/lib/perl5/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/5.8.2]
# [/usr/local/lib/perl5/site_perl/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.2]
# [/usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.0]
# [/usr/local/lib/perl5/site_perl/5.6.1/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.6.1]
# [/usr/local/lib/perl5/site_perl/5.005/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.005]
# [/usr/local/lib/perl5/site_perl/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.2]
# [/usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.0]
# [/usr/local/lib/perl5/site_perl/5.6.1]
# [/usr/local/lib/perl5/site_perl/5.005]
# [/usr/local/lib/perl5/site_perl]
# [.]
# [/usr/local/lib/perl5/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/5.8.2]
# [/usr/local/lib/perl5/site_perl/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.2]
# [/usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.0]
# [/usr/local/lib/perl5/site_perl/5.6.1]
# [/usr/local/lib/perl5/site_perl/5.005]
# [/usr/local/lib/perl5/site_perl]
# [.]
#
# AFTER EDIT:
# [/usr/local/lib/perl5/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/5.8.2]
# [/usr/local/lib/perl5/site_perl/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.2]
# [/usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.0]
# [/usr/local/lib/perl5/site_perl/5.6.1/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.6.1]
# [/usr/local/lib/perl5/site_perl/5.005/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.005]
# [/usr/local/lib/perl5/site_perl/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.2]
# [/usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.0]
# [/usr/local/lib/perl5/site_perl/5.6.1]
# [/usr/local/lib/perl5/site_perl/5.005]
# [/usr/local/lib/perl5/site_perl]
# [.]
# [/usr/local/lib/perl5/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/5.8.2]
# [/usr/local/lib/perl5/site_perl/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.2]
# [/usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.0]
# [/usr/local/lib/perl5/site_perl/5.6.1]
# [/usr/local/lib/perl5/site_perl/5.005]
# [/usr/local/lib/perl5/site_perl]
# [.]
#
install_driver(DBM) failed: Can't locate DBD/DBM.pm in @INC (@INC contains: /usr/local/lib/perl5/5.8.2/i386-freebsd /usr/local/lib/perl5/5.8.2/i386-freebsd /usr/local/lib/perl5/5.8.2 /usr/local/lib/perl5/site_perl/5.8.2/i386-freebsd /usr/local/lib/perl5/site_perl/5.8.2/i386-freebsd /usr/local/lib/perl5/site_perl/5.8.2 /usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd /usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd /usr/local/lib/perl5/site_perl/5.8.0 /usr/local/lib/perl5/site_perl/5.6.1/i386-freebsd /usr/local/lib/perl5/site_perl/5.6.1 /usr/local/lib/perl5/site_perl/5.005/i386-freebsd /usr/local/lib/perl5/site_perl/5.005 /usr/local/lib/perl5/site_perl/5.8.2/i386-freebsd /usr/local/lib/perl5/site_perl/5.8.2 /usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd /usr/local/lib/perl5/site_perl/5.8.0 /usr/local/lib/perl5/site_perl/5.6.1 /usr/local/lib/perl5/site_perl/5.005 /usr/local/lib/perl5/site_perl . /usr/local/lib/perl5/5.8.2/i386-freebsd /usr/local/lib/perl5/5.8.2 /usr/local/lib/perl5/site_perl/5.8.2/i386-freebsd /usr/local/lib/perl5/site_perl/5.8.2 /usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd /usr/local/lib/perl5/site_perl/5.8.0 /usr/local/lib/perl5/site_perl/5.6.1 /usr/local/lib/perl5/site_perl/5.005 /usr/local/lib/perl5/site_perl .) at (eval 10) line 3, <DATA> line 23.
Perhaps the DBD::DBM perl module hasn't been fully installed,
or perhaps the capitalisation of 'DBM' isn't right.
Available drivers: AnyData, CSV, ExampleP, Excel, File, Pg, Proxy, RAM, SQLite, Sponge, XBase, mSQL, mysql.
at t/50dbm.t line 90
# END:
# [/usr/local/lib/perl5/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/5.8.2]
# [/usr/local/lib/perl5/site_perl/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.2]
# [/usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.0]
# [/usr/local/lib/perl5/site_perl/5.6.1/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.6.1]
# [/usr/local/lib/perl5/site_perl/5.005/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.005]
# [/usr/local/lib/perl5/site_perl/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.2]
# [/usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.0]
# [/usr/local/lib/perl5/site_perl/5.6.1]
# [/usr/local/lib/perl5/site_perl/5.005]
# [/usr/local/lib/perl5/site_perl]
# [.]
# [/usr/local/lib/perl5/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/5.8.2]
# [/usr/local/lib/perl5/site_perl/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.2]
# [/usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.0]
# [/usr/local/lib/perl5/site_perl/5.6.1]
# [/usr/local/lib/perl5/site_perl/5.005]
# [/usr/local/lib/perl5/site_perl]
# [.]
#
Undefined subroutine &BerkeleyDB::Term::close_everything called at /usr/local/lib/perl5/site_perl/5.6.1/i386-freebsd/BerkeleyDB.pm line 1388, <DATA> line 23.
END failed--call queue aborted, <DATA> line 23.
# Looks like your test died before it could output anything.
t/50dbm....dubious
Test returned status 2 (wstat 512, 0x200)
DIED. FAILED tests 1-132
Failed 132/132 tests, 0.00% okay
Failed Test Stat Wstat Total Fail Failed List of Failed
------------------------------------------------------------------------ -------
t/50dbm.t 2 512 132 264 200.00% 1-132
Failed 1/1 test scripts, 0.00% okay. 132/132 subtests failed, 0.00% okay.
sahlins%
I'm not sure why there's all the redundancy, though...but wait, when I just run it with Perl, instead of with prove (i.e., Test::Harness), I don't get it!:
sahlins% perl t/50dbm.t
# BEFORE EDIT:
# [/usr/local/lib/perl5/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/5.8.2]
# [/usr/local/lib/perl5/site_perl/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.2]
# [/usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.0]
# [/usr/local/lib/perl5/site_perl/5.6.1]
# [/usr/local/lib/perl5/site_perl/5.005]
# [/usr/local/lib/perl5/site_perl]
# [.]
#
Removed some old dirs from @INC for this test: /usr/local/lib/perl5/site_perl/5.6.1 /usr/local/lib/perl5/site_perl/5.005
# AFTER EDIT:
# [/usr/local/lib/perl5/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/5.8.2]
# [/usr/local/lib/perl5/site_perl/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.2]
# [/usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.0]
# [/usr/local/lib/perl5/site_perl]
# [.]
#
1..44
--- Using SDBM_File () ---
install_driver(DBM) failed: Can't locate DBD/DBM.pm in @INC (@INC contains: /usr/local/lib/perl5/5.8.2/i386-freebsd /usr/local/lib/perl5/5.8.2 /usr/local/lib/perl5/site_perl/5.8.2/i386-freebsd /usr/local/lib/perl5/site_perl/5.8.2 /usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd /usr/local/lib/perl5/site_perl/5.8.0 /usr/local/lib/perl5/site_perl .) at (eval 1) line 3, <DATA> line 23.
Perhaps the DBD::DBM perl module hasn't been fully installed,
or perhaps the capitalisation of 'DBM' isn't right.
Available drivers: ExampleP, Pg, Proxy, SQLite, Sponge.
at t/50dbm.t line 90
# END:
# [/usr/local/lib/perl5/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/5.8.2]
# [/usr/local/lib/perl5/site_perl/5.8.2/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.2]
# [/usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd]
# [/usr/local/lib/perl5/site_perl/5.8.0]
# [/usr/local/lib/perl5/site_perl]
# [.]
#
# Looks like your test died before it could output anything.
Could Test::Harness be inserting all of that crap into @INC? ... Yes, it sure does!
sahlins% cat try #!/usr/bin/perl -w use strict;
use Test::More tests => 1;
diag $_ for @INC;
ok 1;
sahlins% perl try
1..1
# /usr/local/lib/perl5/5.8.2/i386-freebsd
# /usr/local/lib/perl5/5.8.2
# /usr/local/lib/perl5/site_perl/5.8.2/i386-freebsd
# /usr/local/lib/perl5/site_perl/5.8.2
# /usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd
# /usr/local/lib/perl5/site_perl/5.8.0
# /usr/local/lib/perl5/site_perl/5.6.1
# /usr/local/lib/perl5/site_perl/5.005
# /usr/local/lib/perl5/site_perl
# .
ok 1
sahlins% prove try
try...# /usr/local/lib/perl5/5.8.2/i386-freebsd
# /usr/local/lib/perl5/5.8.2/i386-freebsd
# /usr/local/lib/perl5/5.8.2
# /usr/local/lib/perl5/site_perl/5.8.2/i386-freebsd
# /usr/local/lib/perl5/site_perl/5.8.2/i386-freebsd
# /usr/local/lib/perl5/site_perl/5.8.2
# /usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd
# /usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd
# /usr/local/lib/perl5/site_perl/5.8.0
# /usr/local/lib/perl5/site_perl/5.6.1/i386-freebsd
# /usr/local/lib/perl5/site_perl/5.6.1
# /usr/local/lib/perl5/site_perl/5.005/i386-freebsd
# /usr/local/lib/perl5/site_perl/5.005
# /usr/local/lib/perl5/site_perl/5.8.2/i386-freebsd
# /usr/local/lib/perl5/site_perl/5.8.2
# /usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd
# /usr/local/lib/perl5/site_perl/5.8.0
# /usr/local/lib/perl5/site_perl/5.6.1
# /usr/local/lib/perl5/site_perl/5.005
# /usr/local/lib/perl5/site_perl
# .
# /usr/local/lib/perl5/5.8.2/i386-freebsd
# /usr/local/lib/perl5/5.8.2
# /usr/local/lib/perl5/site_perl/5.8.2/i386-freebsd
# /usr/local/lib/perl5/site_perl/5.8.2
# /usr/local/lib/perl5/site_perl/5.8.0/i386-freebsd
# /usr/local/lib/perl5/site_perl/5.8.0
# /usr/local/lib/perl5/site_perl/5.6.1
# /usr/local/lib/perl5/site_perl/5.005
# /usr/local/lib/perl5/site_perl
# .
try...ok
All tests successful.
Files=1, Tests=1, 0 wallclock secs ( 0.02 cusr + 0.01 csys = 0.03 CPU)
What's the deal with _that_??
And what's the "locate" script and why does it find BerkeleyDB.pm in .../5.6.1/i386-freebsd? What perl binary is it running? (does "perl -S locate BerkeleyDB.pm" give the same result?)
Locate is just from the slocate database on this system, which indexes every file on the server every night.
% perl -S 'locate BerkeleyDB.pm' Can't find locate BerkeleyDB.pm on PATH.
Regards,
David