Thread Modulversion vergleichen
(15 answers)
Opened by bianca at 2010-11-28 08:35
geht doch Einfacher:
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 sub versionsvergleich { # # Rückgabe: # ========= # > = linke Version ist höher # = = Versionen sind gleich # < = rechte Version ist höher # E = Fehler aufgetreten # return 'E' if !defined $_[0] || $_[0] eq '' || !defined $_[1] || $_[1] eq ''; my @versions=@_; for my $ver (@versions) { if($ver=~/^(\d+)(?:\D(\d+)(?:\D(\d+)?))?$/) { $ver=$1*1000*1000; $ver+=$2*1000 if($2); $ver+=$3 if($3); } else { return 'E' } } return '=' if($versions[0] == $versions[1]); return '>' if($versions[0] > $versions[1]); return '<' if($versions[0] < $versions[1]); return 'E'; } oder 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 sub versionsvergleich { # # Rückgabe: # ========= # > = linke Version ist höher # = = Versionen sind gleich # < = rechte Version ist höher # E = Fehler aufgetreten # return 'E' if !defined $_[0] || $_[0] eq '' || !defined $_[1] || $_[1] eq ''; my @versions=@_; for my $ver (@versions) { my @l=split(/\D+/$ver); return 'E' unless(@l); $ver=\@l; } for my $pos (0..2) { return '<' if($versions[0][$pos] < $versions[1][$pos]); return '>' if($versions[0][$pos] > $versions[1][$pos]); } return '='; } Dein Code ist mir viel zu kompliziert :-) |