Dairaen: Verzeichnisse mit Perl

Hi,
ich möchte ein Script schreiben, mit dem man sich die Verzeichnisse anzeigen lassen kann. Allerdings gibt mein Script (unten) nur . und .. aus. Woran liegt das?

opendir (VER, 'E:\Xitami');
@All = readdir(VER);
closedir (VER);

foreach $Names (@All)
{
if ( -d $Names)
{
print "Verzeichnis: $Names\n";
}
else
        {
print "Datei: $Names\n";
}
}

  1. Hi Dairaen,

    mit deinem Script kann ich zwar nix anfangen, da ich immer noch kein Perl kann ;), aber wenn du nur die Einträge . und .. erhälst, ist das ein ziemlich eindeutiges Zeichen, daß du es mit einem leeren Verzeichnis zu tun hast, was in deinem Fall vielleicht bedeutet, daß das Verzeichnis 'E:\Xitami' nicht existiert oder Perl den String irgendwie anders interpretiert.. vielleicht muss es 'E:\Xitami' heissen?
    Bei PHP3 z.B. muss ein Backslash () durch 2 Backslashes dargestellt werden.

    Gruss,
      David

  2. hi!

    ich möchte ein Script schreiben, mit dem man sich die Verzeichnisse anzeigen lassen
    kann. Allerdings gibt mein Script (unten) nur . und .. aus. Woran liegt das?

    readdir liefert dir nur die Dateinamen in dem Verzeichnis. Du überprüfst also mit "-d $Names" nur, ob es im aktuellen Verzeichnis ein Unterverzeichnis mit dem in $Names übergebenen Namen existiert. Da du aber die Verzeichniseinträge eines anderen als des aktuellen Verzeichnisses verwendest, findet Perl natürlich nie ein Verzeichnis in @All (außer es würde zufällig auch im aktuellen Verzeichnis existieren, so wie . und .., die in allen Verzeichnissen zu finden sind).

    opendir (VER, 'E:\Xitami');
    @All = readdir(VER);
    closedir (VER);

    foreach $Names (@All)
    {

    »»  if ( -d $Names)

    if (-d "E:\Xitami\$Names") sollte funktionieren.

    »»  {
    »»  print "Verzeichnis: $Names\n";
    »»  }
    »»  else

    {

    »»  print "Datei: $Names\n";
    »»  }

    }

    bye, Frank!

    1. Danke erstmal, so ist das also...
      und welchen Befehl nimmt man damit mein Script so funktioniert wie ich mir das gedacht habe? So das er halt in dem angebenen Verzeichnis alle Unterverzeichnisse auflistet und dann die Dateinamen?

      1. Hat Frank doch schon gesagt:

        if (-d "E:\Xitami\$Names") sollte funktionieren.

        Du musst eben den Verzeichnisnamen noch vor den Dateinamen stellen.

        Bye, Calocybe