Definition von Kommandozeilenparametern im POD mit Getopt::Euclid

| 4 Kommentare | 1 TrackBack

Kurzvorstellung und Bugfix

Ist es nicht lästig, Kommandozeilenparameter erst im Code und dann noch einmal im POD zu definieren? Getopt::Long und Pod::Usage sind zwar sehr praktisch, aber um die Dokumentation sowie Usage etc. konsistent zu halten, muss man immer an zwei Stellen ran: Code und Dokumentation.

damian-curly.jpg

Damian Conway auf der YAPC Europe 2007 in Wien – wenn er seine Module nur so gut warten würde wie er seine Vorträge hält!

 

Hier setzt das Modul Getopt::Euclid von Damian Conway an: Man definiert die Kommandozeilenschnittstelle einfach im POD und hat alles zusammen.

So weit so gut, aber nach der Nutzung von Getopt::Euclid bin ich endgültig der Ansicht: vor dem Einsatz eines Modules von Damian Conway sollte man sich dieses sowie die Bugreports dazu genau anschauen und ihm nicht blind vertrauen – insbesondere wenn er es in Perl Best Practices empfohlen hat. Dieses Buch ist zwar wirklich sehr empfehlenswert und Pflicht für jedes professionelle Entwicklerteam, Damians Module haben aber teilweise viele Bugs und werden eher schlecht gewartet.

Bug, Test und Fix

So hat auch Getopt::Euclid einige Bugs. Besonders fatal: die aktuelle Version ignoriert auf einem Unix-System das POD, wenn die Zeilenenden im Windows-Format vorliegen und umgekehrt (siehe auch den Bugreport). Das ist sehr ärgerlich.

Aber ein Bugfix bzw. Getopt::Euclid Patch (mit allen Dateien im Archiv) steht bereit ...

Um das Problem zu fixen habe ich mir das Modul angeschaut und war doch einigermaßen erstaunt: Anstatt auf einen Pod-Parser vom CPAN zurückzugreifen baut Damian Conway selbstgestrickte tief verschachtelte Reguläre Ausdrücke; anstatt das Parameterparsing einem erprobtem Modul zu überlassen strickt er es selbst. Das gleiche gilt für die Ausgabe der Hilfe. Damit verletzt er selbst die Regeln „Verwenden Sie wann immer möglich Core-Module“ sowie „Verwenden Sie CPAN-Module, wo es möglich ist“, die er in Perl Best Practices aufgestellt hat.

 

Daher habe ich – ausnahmsweise mal ganz vorbildlich – erst einen Test geschrieben, der das Problem simuliert und es dann gefixt: Der Einfachheit halber werden alle möglichen Zeilenumbrüche durch solche ersetzt, die auf dem aktuellen System üblich sind, also durch \n. (Download Patch und gepatchte Version)

HInweis: Da es kein offizieller Patch ist, habe ich die Versionsnummer nicht angepasst. Ich habe ja die Hoffnung, dass Damian ihn übernimmt.

 

1 TrackBack

TrackBack-URL: http://www.perl-blog.de/mt/mt-tb.cgi/111

Da ich gerade wieder eine Literatur-Liste für eine Perl-Schulung für einen Kunden zusammenstelle dachte ich mir: schreibe es doch gleich hier rein, dann ist es wiederverwendbar. Daher im folgenden meine Buch-Empfehlungen für Perl-Program... Mehr

4 Kommentare

Da das eines der Module ist, die Damian dieses Jahr schon mal angefasst hat, sind deine Chancen nicht allzu schlecht.

Bei Damian steht "TDD" für "talk driven development", nicht für "test driven development" wie für den Rest der Perlgemeinschaft.

Dafür, dass er ins POD seiner Module meistens "Bug reports and other feedback are most welcome" schreibt liegen erstaunlich viele Bugs länger als zwei Jahre in seiner Queue, einige auch gerne mal 5 Jahre.

Lade den Patch doch auf CPAN. Wie die Nomenklatur dafür aussieht, hat Andreas König auf dem letzten oder vorletzten Deutschen Perl-Workshop gezeigt. Damit ist der Patch wirklich für alle zugänglich...

Oder übernimm doch das Modul - wenn Damian damit einverstanden ist.

RenneeB: Das Modul übernehmen würde ich nicht allzu gern machen, da das doch ein komischer Klotz ist.
Aber den Patch aufs CPAN laden kann ich machen (und mir mal anschauen wie das ging) -- wenn Damian sich nicht rührt. ;-)

Moritz: Ja, das mit den vielen Bugs ist mir auch aufgefallen.
Mir ist da die Idee gekommen, dass man vielleicht mal die potentielle Qualität von Modulen daran messen könnte, wieviele Bugs (nicht) gefixt sind ... ;-)

Jetzt kommentieren

Aktuelle Kommentare

  • Niels Dettenbach: ...schade eigentlich, das es PyPerl nicht mehr wirklich gibt. Zwar weiter lesen
  • Alvar Freude: Kannte ich noch nicht, danke für den Hinweis; allerdings ist weiter lesen
  • Ben Sieverts: Ich vermisse noch folgendes Buch auf der List: Effective Perl weiter lesen
  • Alex: Ich schlage einfach mal ganz unverschämt bei diesem Beitrag die weiter lesen
  • Marcel: Oke, danke für den Tipp. Schade natürlich. Wird euer Buch weiter lesen
  • Alvar: Nein, leider ist das noch nicht fertig. :-( Es gibt weiter lesen
  • Marcel : Hallo! gibt es dein Buch zu Perl6 schon? Wo kann weiter lesen
  • air max 2009: Nimm ein Paradigma deiner Wahl (z.b. MVC) und lerne Applikationscode weiter lesen
  • vTasker: Was ist das denn für ein MIST? Der Artikel ist weiter lesen
  • Virenschutz-Test: Das ist ja lustig hihi. Der Admin ist wohl nicht weiter lesen

Über diese Seite

Diese Seite enthält einen einen einzelnen Eintrag von Alvar Freude vom 15.05.08 19:56.

Wer zu spät kommt ... ist der vorherige Eintrag in diesem Blog.

Schönes Perl – Noch fünf Tage: Vortrags-Vorschläge für die YAPC Europe 2008 ist der nächste Eintrag in diesem Blog.

Aktuelle Einträge finden Sie auf der Startseite, alle Einträge in den Archiven.