Liebe® Perl Experte/in,
ich habe eine Frage zu Perl-Modulen: Ich habe mehrere Scripte, die auf den gleichen Satz von log-Funktionen zugreifen. Ein Minimal-Beispiel für den Hauptteil einer solchen Datei ist:
sub hw{
print LOG „Hello, World!\n“;
}
open(LOG, „> test.txt“);
hw();
close(LOG);
Um Redundanz zu vermeiden und die Veränderung dieser log-Funktionen zu vereinfachen, würde ich sie jedoch gerne in ein Modul auslagern. Wenn ich mich richtig informiert habe, erstelle ich so das Modul:
package MyModule;
use strict;
use Exporter;
our $VERSION = 1.00;
our @ISA = qw(Exporter);
our @EXPORT = qw(hw);
sub hw{
print LOG „Hello, World!\n“;
}
1;
Und binde es so im Hauptprogramm ein:
use MyModule;
open(LOG, „> test.txt“);
hw();
close(LOG);
Das liefert mir jedoch den folgenden Fehler:
print() on unopened filehandle LOG at MyModule.pm line 10.
Meine Frage ist nun: Kann ich mein filehandle irgendwie an das Modul weiterreichen? (filehandles sind für mich irgendwie komische Objekte in Perl, die ich grundsätzlich nicht so recht verstehe…)
Ein anderer Ansatz ist natürlich, die Verwaltung der filehandles komplett dem Modul zu übertragen, d.h. open(LOG, „> test.txt“); und close(LOG) nur aus dem Modul heraus aufzurufen. Aber ich frage mich trotzdem, ob es für den anderen Ansatz gar keine Lösung gibt.
Vielen Dank für Ihre Hilfe!
Schöne Grüße,
Manfred