Kategorien
Programmierung

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

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()"
Kategorien
Programmierung

Incorrect integer value bei Autoincrement-Feldern

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.

Kategorien
Programmierung

GD-Modul unter ActivePerl installieren

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.

Kategorien
Programmierung

PDFs erstellen mit Perl

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 …

Kategorien
Programmierung

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

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.