#!/bin/blog

March 8, 2007

Ab und zu mal updaten

Filed under: Internet, perl — Tags: — martin @ 8:51 am

Hilferuf vom Kunden: Er hatte ein schon etwas älteres Perl-Script von mir erweitert und mußte schmerzlich feststellen, daß das vom Script generierte Excel-File alle Strings nach 256 Zeichen abschnitt. Kurzes Nachlesen in der Doku von Spreadsheet::WriteExcel ergab jedoch, daß die maximale Länge von Strings eigentlich bei 32767 Zeichen liegen sollte.

Nachdem diese Diskrepanz erst einmal aufgedeckt war, war der Fall schnell gelöst: Das aus dem Jahr 2003 oder 2004 (genaues weiß man nicht mehr) stammende Script benutzte die Version 0.42 von Spreadsheet::WriteExcel. Aktuell ist jedoch die Version 2.18. Es hatte also in der jüngeren Vergangenheit eine gewisse Weiterentwicklung gegeben.

Wirklich gute Perl-Module verändern ihr API nie, sondern bauen es nur aus. So auch in diesem Fall: Nach der Aktualisierung lief das Script noch genau so durch wie früher und für mich war lediglich das Problem mit den 256 Zeichen behoben. Auch wenn ich gerade versuche, ein wenig Ruby zu lernen (wegen der wirklich gelungenen Objektorientierung), ist diese Kontinuität genau das, was ich an Perl so liebe.

Aber genug davon, denn ich stelle grade fest, daß ich klinge wie ein alter Sack, der seine in den 70ern geschriebenen Fortran-Programme für das Maß aller Wartbarkeit hält. 😉

Advertisements

4 Comments »

  1. alter Sack oder jemand der mehr als drei Programme zu warten hat?

    Comment by Martin — March 8, 2007 @ 8:57 am

  2. Haha, schön dass das Update so schmerzfrei vonstatten ging. Gibts einen Grund warum du Ruby Python vorziehst? Oder einfach so.

    Comment by Fred — March 9, 2007 @ 9:03 pm

  3. Ich bin ja kein Programmierer und habe in diesem Bereich auch keine formelle Bildung. Von daher denke ich vielleicht einfach falsch. Aber mich stört an Python, daß bei der Objektorientierung irgendwie die letzte Konsequenz zu fehlen scheint.

    Gleich am Anfang der “Einführung in Python” (O’Reilly) ist ein Beispiel beschrieben, wo ein String an einem Zeichen gesplittet und dann mit einem anderen Zeichen wieder gejoined wird:

    string.join(string.split(“Eins:Zwei:Drei”, “:”), “;”)

    Genau dieses Beispiel hat mich abgeschreckt. Bei dieser Klammer- und Schachtelorgie kann ich auch gleich bei Perl bleiben.

    Das selbe Beispiel in Ruby schreibt sich einfach so, wie man’s spricht:

    “Eins:Zwei:Drei”.split(“:”).join(“;”)

    Natürlich kann man das aus Gründen der Klarheit auch auf drei Zeilen aufteilen, aber hier sieht man schön, wie sich bei Ruby immer nochmal eine Methode dranhängen läßt.

    Gut möglich, daß man mit Python produktiver arbeiten kann, aber für die Produktivität hab ich ja schon Perl. 😉

    Comment by Martin Schmitt — March 10, 2007 @ 7:20 am

  4. nicht unbedingt schöner, aber es geht in die richtige Richtung:

    >>> string.join(“Eins:Zwei:Drei”.split(“:”), “;”)
    ‘Eins;Zwei;Drei’
    >>>

    das split scheint für Strings definiert zu sein, so daß es auch einzeln funktioniert

    >>> “Eins:Zwei:Drei”.split(“:”)
    [‘Eins’, ‘Zwei’, ‘Drei’]
    >>>

    allerdings liefert das eine Liste, so dass das auf diese Weise nicht geht, da das string.join für Listen (noch) nicht definiert ist:

    >>> “Eins:Zwei:Drei”.split(“:”).join(“;”)
    Traceback (most recent call last):
    File “”, line 1, in ?
    AttributeError: ‘list’ object has no attribute ‘join’
    >>>

    (Ich kenne mich allerdings mit Python nicht genug aus, um sagen zu können, ob es eine Lösung gibt, die der obigen ruby-Lösung ähnlich ist …)

    Comment by 123 — March 27, 2007 @ 3:10 pm


RSS feed for comments on this post. TrackBack URI

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Blog at WordPress.com.

%d bloggers like this: