Programmierung

could not find ParserDetails.ini in /Perl/site/lib/XML/SAX

27. Oktober 2008 · Programmierung · andreas · 1 Kommentar

Taucht nach der Installation des Moduls XML::SAX die Fehlermeldung “could not find ParserDetails.ini in /Perl/site/lib/XML/SAX” auf, so findet sich die Lösung in den Perl-XML Frequently Asked Questions:

perl -MXML::SAX -e "XML::SAX->add_parser(q(XML::SAX::PurePerl))->save_parsers()"

Incorrect integer value bei Autoincrement-Feldern

12. Oktober 2008 · Programmierung · andreas · Kein Kommentar

Meldet MySQL nach einem Update auf Version 5 plötzlich jede Menge “Incorrect integer value"s in den Autoincrement-Feldern, dann versucht ein Programm mit an Sicherheit grenzender Wahrscheinlichkeit gerade, eben diese Felder mit leeren Strings zu füttern.

Bis einschließlich Version 4 wurde hier der String stillschweigend durch den jeweiligen Autoincrement-Wert ersetzt, ein Verhalten, das mit Version 5 durch das standardmäßige Einschalten des “STRICT”-Modus geändert wurde.

Wer “quick and dirty” gerne wieder seine Ruhe hätte, kann einfach ein

set sql_mode = '';

absetzen. Wer stattdessen lieber auf Fehlersuche gehen will, dem sei der ‘TRADITIONAL’-Mode empfohlen, der im obigen Fall dann Fehler statt Warnungen ausspuckt.

Nächere Infos zu den verschiedenen SQL-Modi gibt es in der MySQL Dokumentation.


GD-Modul unter ActivePerl installieren

21. September 2008 · Programmierung · andreas · Kein Kommentar

Die ActivePerl-Distribution kommt zwar schon mit einer Menge Module daher, aber ein paar wichtige wie z.B. das Modul zur Ansteuerung der GD Graphics Library sind nicht im Lieferumfang enthalten und fehlen auch im online Repository von ActiveState.

Glücklicherweise gibt es noch ein paar recht gut sortierte Repositories wie z.B. das der University Of Winnipeg, die sich darauf spezialisiert haben, die Lücken aufzufüllen.

Um nun das GD-Modul zu installieren, fügt man am sinnvollsten das passende Repository mittes “Edit” / “Preferences” dem Perl Package Manager hinzu:

Nach dem Synchonisieren der Paket-Datenbank kann dann unter “View all packages” das GD-Paket ausgewählt und installiert werden.


PDFs erstellen mit Perl

07. September 2008 · Programmierung · andreas · 2 Kommentare

Will man aus Perl PDFs erstellen, so gibt es das vorzügliche PDF::API2-Modul, das aber einen entscheidenden Nachteil hat: man wird von Optionen und Möglichkeiten dermaßen erschlagen, daß es schwer ist, überhaupt am Ziel anzukommen.

Als einfachen Ausweg gibt es das Modul PDF::API2::SIMPLE, ein “simplistic wrapper for the excellent PDF::API2 modules”, mit dem man sich auf’s Wesentliche konzentrieren kann.

Leider kann das Modul in seiner aktuellen Version (1.1.4) Bilder nur aus Dateien (JPG, TIFF, PNM, PNG oder GIF, die im Dateisystem vorliegen müssen) einbinden, ein extrem umständlicher Weg, falls diese z.B. in einer Datenbank vorliegen.

Eine entsprechende Erweiterung ist aber schnell - und einfach - gemacht, verhält sich analog zur ursprünglichen image-Methode und kann mit einem GD-Objekt genutzt werden:

sub gdimage {

    my ($self, $src, %opts) = @_;
    my $x = $opts{'x'} || $self->x;
    my $y = $opts{'y'} || $self->y;
    my $width = $opts{'width'} || 100;
    my $height = $opts{'height'} || 100;
    my $scale = $opts{'scale'} || 1;
    my $image = $self->current_page->gfx;

    my $data = $self->pdf->image_gd($src);

    $image->image($data, $x, $y, $width, $height);

    $self->x( $x + $width );
    $self->y( $y );
}

Der Erweiterungsvorschlag ist auch an die Entwickler raus, vielleicht wird er ja integriert …


Can't locate Encode/ConfigLocal.pm at line XX in Encode.pm

11. Juli 2008 · Programmierung · andreas · Kein Kommentar

Wenn Perl nach der Installation des Modules ‘XML-NamespaceSupport’ die Fehlermeldung ‘Can’t locate Encode/ConfigLocal.pm at line XX in Encode.pm’ ausgibt, hilft ein Aufruf von

enc2xs -C

Die entsprechende Doku findet sich bei CPAN.