sub _dirs {   # Startverzeichnis wird geholt,   # und dann ist es nutzlos,   # weil ich leider den Fehler nicht finde # weshalb er immer nur das Startverzeichnis # durchgeht.   my $adir = shift;   my $ad = $adir;   my $r = 1;   my $pos = 0;   my @dirs;   $adir = "..";   DL:   opendir(DIR,"$ad") or goto R;     my @dl = grep { $_ !~ /\./ } readdir DIR;   close DIR;   if ($#dl < 0) {     goto R;   }   my $dl = join ";.ZAHL.;",@dl;   $dl .= ";.ZAHL.;";   $dl =~ s/\.ZAHL\./$r/g;   @dl = split ";",$dl;   splice(@dirs,$pos,0,@dl);   $r++;   foreach (@dl) {     chdir("$adir\/$_") or goto R;     my $aad = "$ad\/$_";     opendir(DIR,"$aad");       my @adl = grep { $_ !~ /\./ } readdir DIR;     closedir DIR;     if ($#adl >= 0) { my $adl = join ";.ZAHL.;",@adl; $adl .= ";.ZAHL.;"; $adl =~ s/\.ZAHL\./$r/g; @adl = split ";",$adl; splice(@dirs,$pos,0,@adl); $pos += $#adl;     }   }   # Sehr unschön, aber was anderes   # ist mir nicht eingefallen.   # das ganze mit den hässlichen Labels...   goto DL;   R:   chdir($adir);   return @dirs; }