Thread version kaputt? (14 answers)
Opened by bianca at 2018-06-15 18:15

bianca
 2018-06-17 10:06
#188541 #188541
User since
2009-09-13
6977 Artikel
BenutzerIn

user image
Hiermit wären meine Notwendigkeiten erfüllt.
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;

sub version_vergleich {
    # Thema "version kaputt?" --> https://www.perl-community.de/bat/poard/thread/20476
    my ($v1,$v2) = @_;
    my $praefix = scalar(split /\./,$$v1) > 2 || scalar(split /\./,$$v2) > 2 ? 'v' : '';
    my $links = version->parse(($$v1 =~ /^([0-9.]+)/ ? $praefix : '').$$v1);
    my $rechts = version->parse(($$v2 =~ /^([0-9.]+)/ ? $praefix : '').$$v2);
    return $links < $rechts ? 1 : $links == $rechts ? 2 : 3;
}

my @deut = ('','<','=','>');
my $nr = 0;
foreach my $ref (
    {
        zeile           => __LINE__,
        wert1           => '1.2.4',
        wert2           => '1.1',
        sollergebnis    => 32,
    },
    {
        zeile           => __LINE__,
        wert1           => 'v1.2.4',
        wert2           => '1.1',
        sollergebnis    => 32,
    },
    {
        zeile           => __LINE__,
        wert1           => '1.2.4',
        wert2           => 'v1.1',
        sollergebnis    => 32,
    },
    {
        zeile           => __LINE__,
        wert1           => 'v1.2.4',
        wert2           => 'v1.1',
        sollergebnis    => 3,
    },
    {
        zeile           => __LINE__,
        wert1           => '1.1',
        wert2           => '1.2.4',
        sollergebnis    => 1,
    },
    {
        zeile           => __LINE__,
        wert1           => '1.2.4',
        wert2           => '1.2.4',
        sollergebnis    => 2,
    },
    {
        zeile           => __LINE__,
        wert1           => '1.2.4.0',
        wert2           => '1.2.4',
        sollergebnis    => 2,
    },
    {
        zeile           => __LINE__,
        wert1           => '1.2.4.0',
        wert2           => '1.2.4',
        sollergebnis    => 32,
    },
    {
        zeile           => __LINE__,
        wert1           => '1.19',
        wert2           => '1.5',
        sollergebnis    => 1,
    },
    {
        zeile           => __LINE__,
        wert1           => '1.19',
        wert2           => '1.5',
        sollergebnis    => 12,
    },
    {
        zeile           => __LINE__,
        wert1           => 1.19,
        wert2           => 1.50,
        sollergebnis    => 12,
    },
    {
        zeile           => __LINE__,
        wert1           => 1.19,
        wert2           => 1.5,
        sollergebnis    => 1,
    },
    {
        zeile           => __LINE__,
        wert1           => 'v1.19',
        wert2           => 'v1.50',
        sollergebnis    => 12,
    },
    {
        zeile           => __LINE__,
        wert1           => 'v1.19_01',
        wert2           => 'v1.19_02',
        sollergebnis    => 1,
    },
) {
    $nr ++;
    printf "Zeile %03d mit $ref->{wert1} ",$ref->{zeile};
    print map {$deut[$_]} (split //,$ref->{sollergebnis});
    print " $ref->{wert2}  -->  ";
    my $erg = version_vergleich(\$ref->{wert1},\$ref->{wert2});
    my $treffer = 0;
    foreach my $char (split //,$ref->{sollergebnis}) {
        if ($erg == $char) {
            $treffer = 1;
            last;
        }
    }
    if ($treffer) { say "OK"; }
    else {
        say "FEHLER, tatsaechliches Ergebnis: $deut[$erg]";
        exit;
    }
}

Verbesserungen?

Editiert von bianca: + tabs=4
Last edited: 2018-06-17 10:07:34 +0200 (CEST)
10 print "Hallo"
20 goto 10

View full thread version kaputt?