Hi
Ich hatte hier schon einmal meinen Fehler gepostet, nur leider ohne Fehlermeldung.
Also meine Fehlermeldung lautet:
read on closed filehandle <_GEN_0> at line 14
mein script:
#!/usr/local/bin/perl -w
#sucht in verschiedenen .osd Dateien nach der
#installierten Version und dem Namen des Packages
#Hauptprogramm
$path = "packages";
verzeichnis_oeffnen();
foreach $file (@verzeichnisse)
{
datei_oeffnen();
}
datei_schreiben();
#Subroutinen
sub datei_oeffnen #öffnet jede .osd datei im verzichnis und schreibt den inhalt in einen array
{
$path = "packages/$file";
@fileliste = <$path/*.osd>;
foreach $file (@fileliste)
{
open(DATEI, $file) || die "Kann die Datei $file nicht oeffnen";
@datei_inhalt=<DATEI>;
durchsuchen_name_version();
$b++;
$inhalt[$b] = "$name\t";
$b++;
$inhalt[$b] = "$version\n";
close(DATEI);
}
}
sub durchsuchen_name_version #durchsucht die datei nach den beiden strings, gibt version und name zurück
{
foreach $zeile (@datei_inhalt)
{
$treffername=index($zeile,"NAME");
$trefferversion=index($zeile,"VERSION");
if (($treffername != -1) && ($trefferversion != -1))
{
@splitten = split (/"/, $zeile);
$name = $splitten[1];
$version = $splitten[5];
}
}
}
sub verzeichnis_oeffnen #liest das verzeichnis und schreibt den Inhalt in einen Array, gibt den array mit dem verzeichnisinhalt zurück
{
$i = 0;
opendir(DIR,"$path") || die "Kann $path nicht oeffnen";
while($verzeichnis = readdir(DIR))
{
$i++;
$verzeichnisse[$i] = $verzeichnis;
}
closedir(DIR);
}
sub datei_schreiben #öffnet log.txt zum schreiben, allerdings nicht zum überschreiben, keine rückgabewert
{
open (SCHREIBEN, ">> log.txt") || die "kann die datei nicht anlegen";;
print SCHREIBEN "@inhalt";
close (SCHREIBEN);
}
Diese Fehlermeldung bekomme ich wie gesagt nur unter NT4.0, unter Win2k bekomme ich sie nicht und es funktioniert.
vielen Dank & Grüße
Matthias Diekhaus