The other annoying warning is "Name ... used only once: possible typo.
+..". For this I do this song-and-dance:
$DB::single = $DB::single = 1;
There's no warning if the variable already exists, which seems correct to me.
This does not warn.
use DB_File;
# Just some global in DB_File.
$DB_File::db_version = 42;
This does warn.
use DB_File;
$DB_File::wibble = 42;
PS The warning happens at compile time so the variable has to exist at compile time. This means:
require DB_File;
$DB_File::db_version = 42;
does warn.