Den eingebauten Fehler sehe ich schon aber das eigentliche Problem ist ein ganz Anderes: Es sind die Default-Werte -> schwubbs landest Du auf der falschen Kiste und wunderst Dich, dass die Datenbank nicht da ist. Das ist ein systematischer Fehler der nicht so schnell gefunden wird, eben weil er systematisch begangen wird. Tippfehler hingegen werden schneller gefunden weil sie nicht systematisch sind.
Andererseits erhöht ein solches struct die Lesbarkeit von Code enorm. Perl kommt einem solchen Syntax entgegen und erlaubt Barwords für die Schlüsselnamen. Und ganz gewissenhafte Entwickler bedienen sich dieser Schreibweise mit einem leading dash:
MyClass->new( -file => 'foo', -lock => 1 );
Faazit: Anstatt Defaults zu setzen, wird nur der Schlüssel notiert was der besseren Lesbarkeit dienlich ist. Parameter die erforderlich sind werden auf null (undef) gesetzt und das wirft eine Ex wenn der Parameter fehlt. MfG