Hallo geehrtes Forum,
ich habe in meinem Script ein Datenbankhandle:
my $db_go = DBI->connect( "DBI:mysql:$name_db", $username_db, $password_db, { RaiseError => 1 } );
Nun möchte ich Teile des Scriptes in ein Modul mit eigenem Namensraum (per Require aufgerufen) auslagern. Zur Zeit funktioniert dies so:
HAUPTSCRIPT:
add_update({ tabelle => 'tabellenname',
daten => $fields,
db_go => $db_go,
});
MODUL:
sub add_update {
my ( $arg_ref ) = @_;
my $tabelle = $arg_ref->{tabelle};
my $fields = $arg_ref->{daten};
my $db_go = $arg_ref->{db_go};
Auf diese Weise kann ich das Datenbankhandle in der Subroutine weiter verwenden. Ich frage mich gerade, ob es so optimal ist. Ich stehe vor drei Alternativen:
1. lassen so wie es ist
Nachteil: der ewig gleiche Parameter $db_go bei jedem Aufruf
2. $db_go als globale Variable definieren
use vars qw( $db_go );
Vorteil: der gleiche Parameter fällt weg
Nachteil?
3. in der Subroutine ein neues Datenbankhandle aufmachen
Vorteil: der gleiche Parameter fällt weg
Nachteil: mehrere Handles = weniger Performance?
könnte später zu Verwirrung führen, wenn im Hauptscript ein anderes Datenbankhandle geöffnet wird
Der Versuch, innerhalb der Subroutine auf diesem Weg auf die Variable zuzugreifen, führt nicht zum Ziel und ist wahrscheinlich auch pfuibäh?
my $db_go = $main::db_go;
Ich tendiere momentan zu der Lösung mit der globalen Variable. Ist das schlau?
Besten Gruß
JOhnnY