+ "$int.$frac";
+};
+
+my $pad_decimals_to_2 = sub { $pad_decimals_to->($_[0], 2) };
+my $pad_decimals_to_4 = sub { $pad_decimals_to->($_[0], 4) };
+
+my $correct_suffixes = sub {
+ my ($v) = @_;
+
+ $v = $default_mapping->($v);
+ $v =~ s/(?<!_)((?:alpha|beta|pre|rc|p)\d*)\b/_$1/g;
+
+ return $v;
+};
+
+my $strip_letters = sub {
+ my ($v) = @_;
+
+ $v = $default_mapping->($v);
+ $v =~ s/(?<=\d)[a-z]+//g;
+
+ return $v;
+};
+
+my $letters_as_suffix = sub {
+ my ($v) = @_;
+
+ $v = $default_mapping->($v);
+ $v =~ s/(?<=\d)b(?=\d)/_beta/g;
+
+ return $v;
+};
+
+my %version_mismatch;
+
+$version_mismatch{$_} = $insert_dot_at_1 for qw<
+ CGI-Simple
+>;
+
+$version_mismatch{$_} = $insert_dot_at_all_1 for qw<
+ AnyEvent
+ Archive-Rar
+ IO-AIO
+ Image-Size
+ Linux-Inotify2
+ PadWalker
+ Tie-Array-Sorted
+ Tk-TableMatrix
+ XML-RSS-Feed
+>;
+
+$version_mismatch{$_} = $insert_dot_at_2 for qw<
+ Error
+>;
+
+$version_mismatch{$_} = $insert_dot_at_all_2 for qw<
+ Authen-Htpasswd
+ BSD-Resource
+ CDDB
+ Cairo
+ Curses-UI
+ DBD-mysql
+ Email-MessageID
+ Exception-Base
+ ExtUtils-CBuilder
+ ExtUtils-ParseXS
+ FileHandle-Unget
+ FreezeThaw
+ Lexical-Persistence
+ Lingua-EN-Inflect
+ Mail-Mbox-MessageParser
+ Module-Build
+ SQL-Abstract-Limit
+ Term-ReadLine-Perl
+ Test-Differences
+ Time-HiRes
+ Time-Local
+ perl-ldap
+>;
+
+$version_mismatch{$_} = $insert_dot_at_all_3 for qw<
+ Parse-RecDescent
+ Return-Value
+>;
+
+$version_mismatch{$_} = $pad_decimals_to_2 for qw<
+ Nmap-Parser
+ XML-AutoWriter
+>;
+
+$version_mismatch{$_} = $pad_decimals_to_4 for qw<
+ Convert-BER
+>;
+
+$version_mismatch{$_} = $correct_suffixes for qw<
+ Gimp
+ XML-Grove
+>;
+
+$version_mismatch{$_} = $strip_letters for qw<
+ DelimMatch
+ SGMLSpm
+>;
+
+$version_mismatch{$_} = $letters_as_suffix for qw<
+ Frontier-RPC
+>;
+
+sub version_c2g {
+ my ($n, $v) = @_;
+
+ return unless defined $v;
+
+ my $handler;
+ $handler = $version_mismatch{$n} if defined $n;
+ $handler = $default_mapping unless defined $handler;
+
+ return $handler->($v);
+}
+
+=head2 C<perl_version_c2g $version>
+
+Converts a perl version as you can find it in prerequisites to a Gentoo version number.
+
+=cut
+
+sub perl_version_c2g {
+ my ($v) = @_;
+
+ return unless defined $v and $v =~ /^[0-9\.]+$/;
+
+ my @parts;
+ if (my ($version, $subversion) = $v =~ /^([0-9]+)\.(0[^\.]+)$/) {
+ my $len = length $subversion;
+ if (my $pad = $len % 3) {
+ $subversion .= '0' x (3 - $pad);