Matthias Diekhaus: W2k und NT4.0

Beitrag lesen

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