神さま教えてください。

以下のサブルーチンの処理中、必ずdieしてしまいます。
DBへアクセスする際の書式が変な気がするのですが…よく分かりません。

sub new {
my ($pkg, $loc) = @_;
my $d = {};

tie (%{$d->{dicc}}, 'DB_File', $loc, $DB_File::O_RD, 0644, $DB_BTREE)
|| die "diccionary->new: error opening database\n";

return bless $d, $pkg;
}

Perlのバージョンは5.6.1、
DB_Fileモジュールのバージョンは1.806、
Berkeley DBのバージョンはここでは1系列です。