Thread Dir ohne Unterordner in .txt Datei u.ä.. Wie? (60 answers)
Opened by stormy2211 at 2007-11-02 21:31

topeg
 2013-02-18 15:38
#165867 #165867
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
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);

View full thread Dir ohne Unterordner in .txt Datei u.ä.. Wie?