shoorick: (Default)
[personal profile] shoorick
Пытался найти в завалах своих перлоскриптов функцию, возвращающую правильное слово в зависимости от идущего перед ним числа. Не нашёл. Пришлось взять валяющийся на видном месте пример на 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 выкладывать, чтобы в следующий раз не искать.

Date: 2007-08-22 05:47 pm (UTC)
From: [identity profile] zauberer.livejournal.com
А что, gettext'а в Perl'е не существует? В PHP он очень хорошо работает, при наличии правильной формулы выбора формы в используемомо po-файле.

хз

Date: 2007-08-23 04:15 am (UTC)
From: [identity profile] shoorick.livejournal.com
Сабж. Если есть в пхп, значит в перле всяко есть...

Существует

Date: 2009-07-03 09:44 am (UTC)
From: [identity profile] shoorick.livejournal.com
Точнее, в перле существует интерфейс к библиотеке. И даже не один.
Разобрался с ним, хорошо работает :-)

Profile

shoorick: (Default)
shoorick

December 2016

S M T W T F S
    1 23
45678910
11121314151617
18 19 2021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 22nd, 2026 09:45 pm
Powered by Dreamwidth Studios