Thread Dir ohne Unterordner in .txt Datei u.ä.. Wie?
(60 answers)
Opened by stormy2211 at 2007-11-02 21:31
Wenn du ein neues Verzeichnis auf machst musst du auch eine neues FileHandle benutzen. Ansonsten wird das Vorherige Überschrieben. Hättest du Lexialische Variablen genommen und diese immer mit "my" passend erzeugt, wäre dir das nicht passiert.
Hier etwas Code wie es funktioniert: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 #!/usr/bin/perl use strict; use warnings; my $Dir='C:/perlprogs/SP_AUF/SALES_0000'; my $OutFile='C:/perlprogs/SP_AUF/fileliste.txt'; my @FileListe; # "open" mit Fehlermeldung wenn es nicht klappt. opendir(my $DirHandle, $Dir) or die "Konnte Ordner '$Dir' nicht öffnen ($!)\n"; while(my $Filename = readdir($DirHandle)) { # "." und ".." überspringen next if($Filename eq '.' or $Filename eq '..'); # Ist es ein Verzeichnis? if(-d $Dir.'/'.$Filename) { my $SubDir=$Dir.'/'.$Filename; opendir(my $SubDirHandle, $SubDir) or die " Konnte Ordner '$SubDir' nicht öffnen ($!)\n"; while(my $SubFilename = readdir($SubDirHandle)) { # ist es keine Datei? next if(!-f $SubDir.'/'.$SubFilename); push(@FileListe, $Filename.'/'.$SubFilename); } closedir($SubDirHandle); } # ist es eine Datei? elsif(-f $Dir.'/'.$Filename) { push(@FileListe, $Filename); } } closedir($DirHandle); open(my $FileHandle,'>',$OutFile) or die "Konnte '$OutFile' nicht Öffnen ($!)\n"; print $FileHandle join("\n",@FileListe); close($FileHandle); |