#! /usr/bin/perl use strict; use warnings; use Data::Dumper; use CGI::Carp 'fatalsToBrowser'; print "Content-type: text/plain\n\n"; my $dimension; # Enthält die aktuelle Dimension des Arrays my @element_nummer = (); # Enthält die aktuelle Position im Array, bezogen auf die Dimension my @array_of_arrays = (); # Wird befüllt my @AoA2 = (); # füll das erste AoA while(){     $dimension = 0; # reset     #@element_nummer=(); # reset     # bisschen was überprüfen und aussortieren     next if($_ =~ /^\s*?$/);     $_ =~ s/^\s+//;     my $path = $_;     chomp $path;     $path =~ s/^\///; #/     next if(length $path < 5);     # unterstes Verzeichnis nehmen und mit "Rattenschwanz" an Funktion insert_rec übergeben     my ($key,$sub) = split(/\//,$path,2);     @AoA2 = (); #reset     push @array_of_arrays, [insert_rec($key,$sub,"ich bin der Link")];     $element_nummer[$dimension]++; } my $outputstruktur = Dumper(@array_of_arrays); # Das was für das JS ausgegeben werden soll # Für das JS die { durch { durch [ ersetzen $outputstruktur =~ s/\$VAR1/var TREE_ITEMS/g; # Variablennamen für JS ändern # Ausgabe print $outputstruktur; sub insert_rec{     my $key2; # Datei oder Verzeichnisname in der 2. Ebene     my $path; # Rattenschwanz des Path, überbleibende Verzeichnisse und Dateien     my $link; # Der Link für das JavaScript     ($key2,$path,$link) = @_;     my ($key,$sub) = split(/\//,$path,2); # Wieder aufteilen     unless($sub){ # Wenn es kein Sub gibt muss es eine Datei sein, also mit Infos zurückgeben         return($key, $link);     }     # Hier komme ich nur hin, wenn $key ein Verzeichnis ist, $sub also existiert, weil ich vorher mit return zurück gesprungen bin.     # und einmal rekursiv Verzeichnis in Array pushen     #return (insert_rec($key,$sub,"ich bin ein Verzeichnis"));     my $arraydimension; # Wie tief soll in das Array gepusht werden?     $arraydimension = 'push @{ $AoA2';     # Dimension anhängen     foreach(@element_nummer){         $arraydimension .= "[".$_."]";     }     $arraydimension .= " }, [ insert_rec('$key','$sub',\"ich bin ein Verzeichnis\") ]";     print $arraydimension."\n";     eval($arraydimension);     # Nächstes Listenelement ist dran     $element_nummer[$dimension]++;     $dimension++;     return(@AoA2); }# end insert_rec # Testdaten # ohne Leerzeichen: verz1/datei1 verz1/datei2 verz1/datei3 verz1/datei4 file1 verz1/verz2/verz3/file1231 verz1/verz2/verz3/file1232 verz1/verz2/file121 verz1/verz2/file122 verz1/verz2/file123