version vergleich
|
Seitenanfang |
| hi ich balstell gerade an einem script was eine aktulle datei version mit der auf einem rcs system vergleicht. nun mache ich im prinzip if ver a > ver b jedoch passiert es hier das er die version 1.5 hoeher interpretiert als die version 1.13 . ich denke ich muss die zahlen erst aufbereiten damit das passt. gibt es dafuer eine funktion in perl ? holger
Datum: 07.03.2008-12:58

|
re: version vergleich
|
Seitenanfang |
my $vers_1 = 1.5; my $vers_2 = 1.13; my ($check_1) = (split /\./, $vers_1)[-1]; my ($check_2) = (split /\./, $vers_2)[-1]; if( $check_1 > $check_2 ){ #... }
Datum: 07.03.2008-13:21

|
re: version vergleich
|
Seitenanfang |
| hi ja den split gedanken hatte ich auch , jedoch sehe ich das etwas problematisch das rcs auch schonmal ne version 1.10.1 und aehnlich bringen kann. ich spiele zz mit dem gedanken einfach den . rauszuschneiden so das ich 1x die 15 und 1x 113 als version habe . holger
Datum: 07.03.2008-13:47

|
re: version vergleich
|
Seitenanfang |
| Und was machst Du bei 1.5.1 und 1.13??
Datum: 07.03.2008-18:07

|
re: version vergleich
|
Seitenanfang |
| Hallo! schau dir mal das Modul Perl::Version (http://search.cpan.org/~andya/Perl-Version-1.004/lib/Perl/Version.pm) und dort speziell die Methode 'numify' an. Dort wird dein Problem gelöst, indem für jeden Punkt eine entsprechende Anzahl Nullen eingefügt wird. d.h. du würdest dann 1.013 und 1.005 als Versionsnummern erhalten (plus einiger zusätzlicher Nullen hinten dran). Wenn du nicht das ganze Modul installieren willst, kannst du ja zumindest die Idee für eine eigene Umwandlungsfunktion wiederverwenden. Grüße, Skrilax
Datum: 07.03.2008-23:56

|
re: version vergleich
|
Seitenanfang |
Oder was natürlich noch viel einfacher ist: use Perl::Version; my $a = Perl::Version->new('1.5'); my $b = Perl::Version->new('1.13'); print "\$b ist aktueller\n" if $a < $b;
(Ein Hoch auf overload ;-) ) Grüße, Skrilax
Datum: 08.03.2008-00:17

|