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.