Es ist natürlich auf den ersten Blick schwierig, das Konstrukt zu entschlüsseln.
Für Nero, der es ja selbst geschrieben hat, ist es lesbar, denn er wweiß ja, was er da fabriziert.
Für Außenstehende wie mich und dich, ist es auf den ersten Blick verwirrend, denn so eingearbeitet in Perl bin ich auch noch nicht, als dass ich sofort erkannt hätte, dass Nero in seiner StringField-Funktion mit Arrays arbeitet ohne dies deklariert zu haben:
split liefert den aufgeteilten String als Array zurück, Nero setzt den split-Aufruf in Klammern:
> (split( ... ))
und hängt noch einen Index dran, so geht die Rückgabe nicht verloren, denn
> (split( ... ))[5]
beispielsweise ergibt das 5. Feld (der Index in [Klammern] ist nämlich 4), das wiederum sofort an return übergeben wird. Wie geil ich hyperventiliere gleich...

Ich finde das total raffiniert, dass ich nicht darauf gekommen bin, sieht man daran, dass meine StringField-Perl-Funktion mehrere Zeilen enthält.
@ Nero: hast du noch so einiges auf Lager, dass du mir beibringen könntest?
Bei deiner ExamineDirectory-Sub habe ich aber noch eine Frage: Du inkrementierst $i und setzt es dann als Index ein; wird nun erst inkrementiert und dann das Ergebnis als Index für das Array verwendet oder umgekehrt?