Module !
Hier mal ein ausgesprochen Modulloser Codeschnipsel.
Vorher
Probleme
Nun, dieses Programm hat nur eine Aufgabe: Einen Haufen Dateien durchsuchen und die Zeile 'Autor:' löschen, wenn kein Autor gegeben ist. Ganz abgesehen davon, dass der Code dies in seiner Rohfassung nicht tut, ist aber auch drumherum einiges im Unschönen.
- strict fehlt
- Zeilen 3,11,26: open() wird nicht auf seinen Rückgabewert geprüft
- Es fehlen 2 close() Aufrufe
- Es wird Speicher verschmissen, indem Dateien komplett in den Speicher gelesen werden.
- das Ganze ist ausgesprochen unportabel und anfällig gegen kleinste Umgebungsschwankungen.
Sicherlich muss man sagen, dass der Code ja auch nur ein kleines Werkzeug darstellt, das niemals den Computer verlässt, auf dem es einmal liegt.
Ziele
Was wollen wir also? Im Grunde wollen wir eine Art find-grep-delete script basteln, das also in einem Verzeichnis Dateien nach einem Muster ausfindig macht und bestimmte Zeilen aus den Dateien löscht.
Das ganze wird konfigurierbarer, d.h. wir werden uns Getopt::Long an dieser Stelle zu Nutze machen. Gerade gestern (22.6.2002) wurde Getopt::Long 2.32 in c.l.p.announce angepriesen, also!
Zweitens soll der Code portabel werden, dazu verwenden wir kein externes Programm, sondern File::Find.
Ergebnis
Ein weiteres, gutes Script, das mehr Features hat als jemals verwendet werden :)