Habe gerade ein Update hochgeschickt
Ich lese jetzt zum ersten mal in deinem Code. Ich muss zugeben das das stellenweise nicht unbedingt leicht zu lesen ist. Liegt vielleicht auch an der Uhrzeit.
Mag sein, aber perl ist auch nicht ohne Grund als write-only-Sprache bekannt
-chomp machtnicht das, was du in deinem Kommentar angibst.
Das wird auf jeden Fall an der Uhrzeit gelegen haben - oder an einem copy&paste zu viel. Ist korrigiert. Natürlich wird mit chomp der Zeilenumbruch entfernt
- Filehandles bzw. in deinem Fall Dirhandles öffnet man nicht mehr über Barewords. Das ist deprecated. Spätestens mit Perl6 wirst du da massiv Probleme bekommen. http://perlmaven.com/open-files-in-the-old-way
Gut, wusste ich nicht. Ich hatte es ursprünglich so gelernt, womöglich aus entsprechend alten Skripten, und bisher hat es immer funktioniert. Mit perl6 habe ich mich auch noch gar nicht befasst.
- Du prüfst über eine Regular Expression nach einem 'trailing slash'. Dann lieber einmal ein Slash zu viel, als Performance über eine unnötige Regular Expression zu verlieren.
Für argsdir könnte das klappen, mit einem doppelten Slash mache ich mir aber meine Prüfung kaputt ob der jetzige Link in die richtige Richtung schießt - das müsste man dann an anderer Stelle anpassen. Habe mal einen passenden Kommentar eingefügt. Vielleicht ergibt sich noch eine bessere Lösung
- Deine Editor Sucherei finde ich ein bisschen Overkill. Ja, ich habe nano als Default gesetzt. Wählt man jetzt als Default 'vi' sollte man auf der sicheren Seite sein. So ist das bei Git z.B. auch.
Die Umgebungsvariable an erster Stelle ist klar, an zweiter stelle, das /usr/bin/editor, zeigt bei mir auf /etc/alternatives/editor, was per update-alternatives entsprechend angepasst werden kann. Die Suche danach habe ich jetzt kurzerhand durch ein `which vi` ersetzt ansonsten gibt es eben eine (neue) Fehlermeldung
- Du hast immer mal wieder mit einbuchstabige Skalarnamen. Ich glaube es ist eine Referenz auf ein Hash.
Ja, Referenz auf ein Element aus %files, was wiederum ein anonymes Hash ist. Dient nur dazu den Quellcode zu verkürzen um nicht jedesmal $files{$name} scheiben zu müssen
- Achja und eine Sache noch. Du hast eine Subroutine auf einen Skalar gelegt. Das sehe ich bei dir zum ersten mal. Ich wusste gar nicht, dass das geht. Wenn ich das richtig verstehe versteckst du damit das sub innerhalb von 'getFiles'.
Kann man machen, nennt sich anonymous subroutine. Ich hatte es gemacht weil ich getFiles vorher aus den einzelnen Unterfunktionen list, enable etc. aufgerufen habe und diese Routine gerne in der Funktion getFiles definiert haben wollte. Da ich aber dazu übergegangen bin getFiles direkt vorab aufzurufen habe ich die Schachtelung kurzerhand entfernt. Aus der anonymen Funktion konnte so eine "richtige" werden.
Clemens