Пытался найти в завалах своих перлоскриптов функцию, возвращающую правильное слово в зависимости от идущего перед ним числа. Не нашёл. Пришлось взять
валяющийся на видном месте пример на php и перевести его на перл:
=head1 METHODS
=head2 after_number
Возвращает, в зависимости от $howmany, правильную форму слова:
after_number(10, 'ив', 'ива', 'ивы') == 'ив'
after_number(21, 'ив', 'ива', 'ивы') == 'ива'
after_number(32, 'ив', 'ива', 'ивы') == 'ивы'
=cut
sub after_number {
my ($howmany, $s0, $s1, $s2) = @_;
return $s2 if ($howmany != int $howmany); # Нецелое число: 1.5 землекопа
my $c = $howmany % 100; # Оставляем 2 последних цифры
# Особые варианты: x11..x14
return $s0 if ($c >= 5 && $c <= 20);
$c %= 10; # Оставляем последнюю цифру
return $s1 if ($c == 1);
return $s2 if ($c >= 2 && $c <= 4);
return $s0;
} # sub after_number
Чую, пора на CPAN выкладывать, чтобы в следующий раз не искать.