Juni 2008 Archive

Perl-Programmierer sind es gewohnt, sich die Arbeit durch viele schöne Konstrukte stark zu erleichtern. Manche davon wenden viele einfach an, ohne sich Gedanken darüber zu machen. Eines davon ist die Autovivification – zu Deutsch etwa „automatische Belebung“, da Referenzen automatisch zum Leben erweckt werden. Und die kann auch noch einiges mehr, als man glaubt.

Häufig muss man mit mehr oder minder vollständigen Eingabedaten in komplexen Datenstrukturen arbeiten, will aber dennoch sicherstellen, dass alles korrekt funktioniert bzw. keine Warnungen über undefinierte Variablen erhalten. Größere if-Blöcke sind da dann die Folge. Bei Perl sind diese aber oft unnötig. Denn Perl bietet – im Gegensatz zu beispielsweise Python, PHP, Ruby, Java oder C – mit der Autovivification die Möglichkeit, beim Zugriff auf komplexe Datenstrukturen viel Code zu sparen, den Code damit kompakter, übersichtlicher und robuster zu gestalten. Wer Bullshit-Bingo spielen will, darf es auch „Win-Win-Situation“ nennen.

 

Letztens hatte ich ein paar Probleme mit dem CPAN unter der Strawberry-Perl-Installation unter Windows auf einem Laptop vom Kunden. Mit Windows zu arbeiten ist ja meistens schon Strafe genug, es scheint aber, dass diese Probleme nicht nur mit Strawberry-Perl auftreten:

Bei dem Versuch der Installation eines Modules kam die folgende Fehlermeldung:

Can't call method "value" on an undefined value at c:/strawberry/perl/lib/IO/Uncompress/RawInflate.pm line 64

Die CPAN-Shell konnte noch nicht mal die Modulliste auspacken geschweige denn irgendwas installieren. Die Lösung war dann nach langem Probieren: Die Version 2.008 von IO::Uncompress::RawInflate (in IO-Compress-Zlib) und alle Abhängigkeiten bzw. die weiterem IO::(Un)Compress::*-Module habe ich manuell auf die Version 2.011 aktualisiert und dann ging wieder alles.

Ergänzung: Unter Linux oder einem Unix-ähnlichen System mit lokalem gzip/bzip2 könnte es auch klappen, die Module zu löschen, so dass Perl ein lokales CLI gunzip/bunzip2 nimmt.

 

Zuvor hatte ich noch ein anderes Problem:

cpan> install Foo::Bar
DBD::SQLite::db prepare failed: no such table: dists(1) at dbdimp.c line 271 at C:\strawberry\perl\site\lib/CPAN/SQLite/
DBI/Search.pm line 86, <IN> line 2.
Catching error: 'DBD::SQLite::db prepare failed: no such table: dists(1) at dbdimp.c line 271 at C:\\strawberry\\perl\\s
ite\\lib/CPAN/SQLite/DBI/Search.pm line 86, <IN> line 2.
' at C:/strawberry/perl/lib/CPAN.pm line 281
        CPAN::shell() called at C:\strawberry\perl\bin/cpan.bat line 211

Da war die SQLite-Datenbank, in der das CPAN.pm optional die Metadaten ablegt (use_sqlite-Konfiguration), kaputt. Möglicherweise wird die zerschossen, wenn die CPAN-Shell an der falschen Stelle abgewürgt wird (bei mir: hatte vergessen mich ins VPN des Kunden einzuwählen, und ohne geht dessen Proxy natürlich nicht).

Die Lösung ist dann meist, die Datenbank oder gar alles im CPAN-Ordner zu löschen. Bei Strawberryperl liegt das unter C:\strawberry\cpan\, bei anständigen Betriebssystemen unter ~/.cpan/.

 

 

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-Programmierer/Perl-Einsteiger (nicht nur) im Unternehmensumfeld.

Hinweis: die folgenden Links der Bücher gehen wenn möglich direkt zu Amazon, sind also rechtlich als Anzeige/Werbung zu verstehen ...

(Fast) alle Bücher sind von O'Reilly. Nicht, weil ich dem Verlag in irgendeiner Art verbunden wäre, sondern weil Perl-Bücher von O'Reilly überdurchschnittlich gut sind. Da merkt man, wer ein fachlich fundiertes Lektorat hat. 

Die Buchtipps habe ich in die folgenden Kategorien eingeteilt (Link zum jeweiligen Abschnitt):

Perl lernen, Pflichtlektüre, Nachschlagewerke, Web-Entwicklung, Testing

 

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 dieses Archiv

Diese Seite enthält alle Einträge von Perl-Blog von neu nach alt.

Mai 2008 ist das vorherige Archiv.

Juli 2008 ist das nächste Archiv.

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