Ich habe ein etwas größeres Programm das oft auf mySQL zugreifen muss.
Ich möchte nicht in jeder Funktion ein eigenes Statement ausführen das ich häufiger benötige. Deshalb arbeite ich häufig verwendete Anfragen in einer zentralen Funktion ab und schleppe dann die Referenz immer hinter mir her durch die einzelnen Funktionen.
Das sieht dann also so aus:
sub basics {
my $funktion = shift; # funktionsreferenz auf &beispielfunktion
my %params = (.. alles was ich öfters benötige wie zB Objektreferenzen, $dbh, Treiberkonfiguration usw)
$funktion->(\%params);
}
sub beispielfunktion {
my $args = shift;
print "hallo ",$args->{'username'};
print "du bist ",$args->{'DBH'}->selectrow_array("SELECT username FROM users WHERE id = '$args->{id}'");
&weiter_gehts($args);
}
Nun habe ich eine andere Idee: Ich möchte häufig verwendete Daten wie z.B.
$dbh, Referenzen, Username (ermittelt aus einer mySQl Abfrage), usw. in einem Modul "cachen", sodass ich diese nicht ständig mit mir rumschleppen muss.
Ich stelle mir das dann so vor, dass ich z.b. mit MyProgram::refs() auf meine ganzen Referenzen zugreifen kann.
Ist sowas üblich und wenn ja, wie schaffe ich es, dass die Daten im Modul erhalten bleiben?