Michael Schröpl: Perl Module einbinden

Beitrag lesen

package modules;
sub database_read

»»  {
»»  open(DATABASE, "<$base");
»»  @base_datas = <DATABASE>;
»»  close DATABASE;
»»  }

1;

wenn ich das modul jetzt mit &modules::database_read; einbinde wird die datenbank nicht geoeffnet.....ich vermute das der parameter ($base) nicht uebergeben wird......was kann ich dagegen machen ????

Anders als Frank nehme ich Deine Aussage mal wörtlich. Die Antwort würde dann lauten: Weil Deine Funktion nicht automatisch aufgerufen wird.
Würdest Du einen solchen Aufruf in Deinen Modul-Initialisierungscode schreiben (das ist, die Stelle, wo bisher nur "1;" steht), dann würde beim Einbinden des Moduls immer auch gleich die Datenbank geöffnet.

Wobei Du dann allerdings ein anderes Problem bekommst: Wie übergibst Du Deinen expliziten Parameterwert an einen impliziten Funktionsaufruf?
Da müßten die Module-Freaks weiterhelfen können (wahrscheinlich kann man bei "use" irgendwie Parameter mit durchreichen oder etwas in der Richtung).