2013-04-24T15:14:32 pq
1 2 3 4 5 6 7
#!/usr/bin/perl -w use strict; use warnings; use ExtUtils::MM_Unix; my $version = MM->parse_version('/usr/share/perl5/Net/SNMP.pm'); print "'$version' ".ord($version)."\n";
Quote'' 5
2013-05-05T10:03:03 pqschau dir inperldata den punkt "Version Strings" an.
und dann schau dir den quelltext von parse_version in ExtUtils/MM_Unix.pm an.
2013-05-05T10:03:03 pq
2013-05-05T10:03:03 pqden perfekten versions-parser gibt es noch nicht.
2013-05-05T13:07:15 bianca
Quote
Quote2013-05-05T10:03:03 pqden perfekten versions-parser gibt es noch nicht.
Was läuft denn hier falsch? Ist die Syntax in diesem ausgelesenen Modul falsch oder an welcher Stelle passiert der Fehler? Ich bin mit diesen Versionsangaben nicht vertraut und kann nicht beurteilen, welche Stelle hier versagt.
Kannst du mir helfen?
1 2 3 4 5
our $VERSION = sprintf "%d.%02d", q$Revision: 1.4 $ =~ /(\d+)/g; our $VERSION = v5.2.0; our $VERSION = "v5.2.0"; our $VERSION = 1.001005; use version; our $VERSION = version->declare("v1.2.3");
2013-05-05T13:42:36 pqwie genau prüfst du denn, ob ein byte zurückgeliefert wird?
2013-05-05T13:42:36 pqder autor findet version strings toll. es ist legitim, diese so zu benutzen, aber AFAIK nicht empfohlen. (in einer neueren version macht er es anders.)
2013-05-05T18:35:23 bianca2013-05-05T13:42:36 pqwie 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?
QuoteIch 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.
QuoteDavon 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?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ perl -wE'
my $v = v5.2.0;
say ord for split //, $v;
use Devel::Peek;
Dump $v;'
5
2
0
SV = PVMG(0x1fca8c0) at 0x1fd26e0
REFCNT = 1
FLAGS = (PADMY,SMG,RMG,POK,pPOK)
IV = 0
NV = 0
PV = 0x1fcb820 "\5\2\0"\0
CUR = 3
LEN = 16
MAGIC = 0x1fd50e0
MG_VIRTUAL = &PL_vtbl_vstring
MG_TYPE = PERL_MAGIC_vstring(V)
MG_LEN = 6
MG_PTR = 0x1fd96d0 "v5.2.0"
2013-05-05T19:04:03 pqdu 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?
2013-05-05T19:19:40 biancaVermutlich auch nicht, nachdem ich die Doku gelesen und nicht die Hälfte verstanden hätte :)
2013-05-05T18:35:23 bianca
2013-05-05T19:12:42 pqund inwiefern sagt dir dieser code, dass $version da nur ein byte enthält?