Thread Module inventarisieren ohne ExtUtils::Installed (26 answers)
Opened by bianca at 2013-04-24 11:25

pq
 2013-05-05 21:04
#167428 #167428
User since
2003-08-04
12207 Artikel
Admin1
[Homepage]
user image
2013-05-05T18:35:23 bianca
2013-05-05T13:42:36 pq
wie genau prüfst du denn, ob ein byte zurückgeliefert wird?

So:
msg #167421

Wenn ich diese ganzen Dokus lese, bekomme ich dann am Ende eine brauchbare Versionsangabe für dieses eine Modul raus? Oder inwiefern nützt mir das?

du solltest die doku zu version strings lesen, um zu verstehen, was bei v5.2.0 passiert und warum du da eben nicht nur ein byte bekommst, auch wenn du es glaubst. (schonmal length() probiert? oder Devel::Peek? dann siehst du, was wirklich drinsteht.)
du solltest dir den code von MM_Unix.pm::parse_version ansehen, um zu sehen, was da für ein aufwand betrieben wird, um an die version zu gelangen, ohne das ganze modul laden zu müssen.
du solltest dir version.pm ansehen und den tipp ausprobieren, um zu sehen, wie man aus dem version string eine lesbare variante machen kann.

diese hinweise kann ich dir geben, aber ich kann und will dir nicht diese ganze doku vorlesen und erklären. mit version strings hab ich selber noch nicht oft zu tun gehabt.

Quote
Ich wollte das Thema Versionen nicht studieren sondern dachte, durch Einsatz eines Moduls würde mir das selbst erfinden abgenommen. Nun schlägt das in ein paar Fällen fehl und ich wüsste eigentlich nur gern, an welcher Stelle der Fehler liegt, damit ich demjenigen Bescheid geben kann, das zu beheben.

der "fehler" liegt darin, dass man für $VERSION beliebigen code angeben kann und verschiedene versionsformate. das kann manchmal praktisch sein (siehe mein beispiel mit der $Revision$ aus CVS). das kann aber auch unheimlich nerven, da man ganz ohne eval nicht auskommt.

ein version string (oder auch v-string genannt) lässt sich nunmal nicht so einfach ausgeben (oder gibt nicht wie erwartet die version aus).
benutzt man jedoch My::Package->VERSION, wird das automatisch in ein lesbares format konvertiert.

du kannst das mit version.pm beheben wie gezeigt.

du kannst auch die neueste version von Net::SNMP installieren. damit hast du das problem nicht mehr (vorausgesetzt, kein anderes modul hat so ein format) und musst dich nicht mehr damit beschäftigen.

wenn du jedoch etwas verbessern willst, musst du wohl oder übel verstehen, was passiert und dazu doku und code lesen.


Quote
Davon ausgehend, dass es nur dieses eine Modul und seine Untermodule betrifft würde das ja heißen, diese Syntax für Version strings würde in keinem anderen der über 1.300 Module auf meinem Server vorkommen. Ist das realistisch?

das ist durchaus möglich. die empfohlene variante ist wie gesagt eine andere.
Last edited: 2013-05-05 21:06:52 +0200 (CEST)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem

View full thread Module inventarisieren ohne ExtUtils::Installed