他就是利用了sprintf的前边补零,要说大二学习C语言就知道这个,可我就没想到
我之前是想用正则表达式将其大中小版本存到数组里边,然后再比较,比较的超麻烦。
代码来自mysql-util里边
my $vp = new VersionParser();
$vp->version_ge($main_dbh, '4.1.1')
###########################################################################
# VersionParser package 1149
# ###########################################################################
use strict;
use warnings FATAL => 'all';
package VersionParser;
sub new {
my ( $class ) = @_;
bless {}, $class;
}
sub parse {
my ( $self, $str ) = @_;
return sprintf('%03d%03d%03d', $str =~ m/(d+)/g);
}
sub version_ge {
my ( $self, $dbh, $target ) = @_;
$self->{$dbh} ||= $self->parse(
$dbh->selectrow_array('SELECT VERSION()'));
return $self->{$dbh} ge $self->parse($target);
}
1;
# ###########################################################################
# End VersionParser package
# ###########################################################################
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/82392/viewspace-144730/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/82392/viewspace-144730/