Hallo Stefan,
open ({my,our} $FILE, "...") or die $!;
open(my $FILE, "$gFile") || die("can't read $gFile, $!");
Wenn ich das so definiere, gehen leider die Dateifunktionen nicht.
FILE muss doch die Adresse des Filezeigers haben, dann kann man doch auch nicht my $FILE schreiben.
Die Verzeichnis- und Dateihandles von Perl sind keine richtigen Variablen. Sie haben so eine Art Sonderstatus.
Ich würde dir raten, das Perl-Modul IO::File einzubinden. Das stellt Dateihandles als Objekte zur Verfügung.
Die kannst du dann wie gewöhnliche Variablen verwenden -- also auch mit "my" oder "our". Auch die Übergabe als
Parameter für Subroutinen ist damit möglich.
Die Benutzung ist relativ unkompliziert, es lassen sich alle üblichen Ein- und Ausgabeoperationen von Perl
auf diese Filehandles anwenden, und das Modul ist gut dokumentiert:
use IO::File;
# Filehandle initialisieren
$fh = new IO::File;
# Datei öffnen, anzeigen und schließen
if ($fh->open("< file")) {
print <$fh>;
$fh->close;
}
$fh = new IO::File "> file";
if (defined $fh) {
# in Datei schreiben
print $fh "bar\n";
$fh->close;
}
MffG
EisFuX
... Suchmaschinen-Blog ...