RDW #1 - Rätsel der Woche Nummer 1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Regeln: * Bitte nicht vor Ablauf der ersten 72 Stunden ( = drei Tage ) ~~~~~~~ nach Veröffentlichung Hinweise (Spoiler) oder Lösungen ver- öffentlichen! * Wenn diese Zeit abgelaufen ist, werde ich einen Thread mit passendem Titel erstellen, in dem die Lösungen gepostet werden und diskutiert werden können. * Die Lösungen sollten nicht nur gepostet, sondern auch an mich gemailt werden, damit ich sie testen, "bewerten" und zu- sammenfassen kann. Die Adrese dafür lautet: crian <---AT---> perl <---MINUS---> community <---DOT---> de Im Betreff sollte 'RDW' und die Nummer des Rätsels stehen. Hilfreich wäre neben dem Quellcode der Username im Forum sowie Perl- und OS-Version, falls Du diese kennst. * Verständnisfragen dürfen in diesem Thread gestellt werden, aber Tipps und (Teil-) Lösungen sind hier unerwünscht. * Ich werde die eingeschickten Programme im Netz zur Verfügung stellen, so dass gerade lange Quellcodes nicht (komplett) gepostet werden müssen. Aufgabe: Du sollst ein Programm schreiben, das ausgehend von dem Verzeichnis, ~~~~~~~~ von dem aus der Benutzer dieses Programm startet die Dateien dieses Verzeichnisses und all seiner Unterverzeichnisse in eine Struktur der folgenden Art einliest: %dir = ( dir1 => { subdir1.1 => { file1.1.1 => '', file1.1.2 => '', }, subdir1.2 => { file 1.2.1 => '', }, subdir1.3 => { }, file1.1 => '', file1.2 => '', file1.3 => '', }, dir2 => { file2.1 => '', }, file1 => '', file2 => '', file3 => '', ); Verzeichnisstruktur dazu: ./ ./dir1/ ./dir1/subdir1.1/ ./dir1/subdir1.1/file1.1.1 ./dir1/subdir1.1/file1.1.2 ./dir1/subdir1.2/ ./dir1/subdir1.2/file1.2.1 ./dir1/subdir1.3/ ./dir1/file1.1 ./dir1/file1.2 ./dir1/file1.3 ./file1 ./file2 ./file3 Bau in Dein Programm eine Funktion ein, die die erzeugte Daten- struktur ausgibt und rufe diese im Defaultfall auf. Extras: * Wie sollen Softlinks behandelt werden (wenn Dir das nichts sagt, ~~~~~~~ kümmer Dich nicht weiter drum)? * Welche Optionen findest Du sinnvoll? Bau ein, was Du für sinnvoll hältst. * Nach Möglichkeit sollte das Programm mit den unterschiedlichen Directorytrennern von verschiedenen Betriebssystemen zurecht kommen. Wenn Du aber nicht weißt, wie Du das elegant lösen kannst, lass es weg.