[Kiev-pm] Ест ли готовые модули для записи чисел словами на украинском языке?

Sergey Leschenko sergle.ua на gmail.com
Чт Янв 26 15:02:43 PST 2012


Есть фрагмент, работающий с 2004м года :)  Однобуквенные переменные...

====
my @decada = qw(нуль одна двi три чотири п'ять шiсть сiм
   вiсiм дев'ять десять одинадцять дванадцять тринадцять чотирнадцять
   п'ятнадцять шiстнадцять сiмнадцять вiсiмнадцять дев'ятнадцять
   двадцять);

my @hundred = qw(нуль десять двадцять тридцять сорок п'ятдесят
   шiстдесят сiмдесят вiсiмдесят дев'яносто);

my @thousand = qw(нуль сто двiстi триста чотириста п'ятьсот шiстсот
   сiмсот вiсiмсот дев'ятьсот);

sub token {
    my ($num) = @_;
    return $decada[$num] if $num <= 20;
    if ($num < 100) {
        my $a = int($num/10);
        my $b = $num %10;
        return $hundred[$a].($b >0 ?' '.$decada[$b]:'');
    }
    elsif ($num <= 999) {
        my $a = int($num/100);
        my $b = $num % 100;
        return $thousand[$a].($b >0 ? ' '.token($b):'');
    }
    else {
        my $t = int($num/1000);
        my $r = int($num) % 1000;
        my $d = $t % 10;
        my $l= token($t);

        SWITCH: {
            $d == 1 && do { $l.=' тисяча'; last SWITCH; };
            $d < 5 && $d > 0 && do { $l.=' тисячi'; last SWITCH; };
            $l.=' тисяч';
            last SWITCH;
        };
        if ($r) {
            $l.=' '.token($r);
        }
        return $l;
    }
    return '';
}
====

--
Sergey


Подробная информация о списке рассылки Kiev-pm