Первый блин
Feb. 24th, 2010 11:58 amНа перлбурге обслуждали мы с Анатолием
sharifulinым его блиц-доклад про CPAN.
— А что хочешь выложить?
— Да есть у меня модуль для склонения русских имён.
— Так он, поди, у всех есть! :-) Каждый его пишет.
— Пишет, может, и каждый, да не каждый выкладывает.
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
— А что хочешь выложить?
— Да есть у меня модуль для склонения русских имён.
— Так он, поди, у всех есть! :-) Каждый его пишет.
— Пишет, может, и каждый, да не каждый выкладывает.
Мне известен лишь один модуль, который склоняет имена — Lingua::RU::Sklon, но он мне не нравится:
- Кодировка модуля — вражеская CP1251 вместо правильной UTF-8.
- Идентификаторы образованы от сокр. рус. слов.
VIN
вместоACCUSATIVE
— неудобно. - За три года модуль так и не ушёл дальше версии 0.01
#!/usr/bin/perl -wl -CO
use utf8;
use Lingua::RU::Inflect ':all';
my @name = qw/Чайковский Пётр Ильич/;
my @inflected;
$, = ' ';
for ( NOMINATIVE .. PREPOSITIONAL ) {
@inflected = inflect_given_name( $_, @name );
push @inflected, shift @inflected;
print @inflected;
}
Результат: $ ./test-tchaikovsky.plРаботоспособность протестирована пока что в Mandriva Linux 2010.0, FreeBSD 6.2 и 7.2.
Пётр Ильич Чайковский
Петра Ильича Чайковского
Петру Ильичу Чайковскому
Петра Ильича Чайковского
Петром Ильичом Чайковским
Петре Ильиче Чайковском
Ближайшие планы:
- Разобраться с кириллицей в документации (CPAN считает, что она написана в ISO8859-1, а не в UTF-8);
- Написать README, а не оставлять то, что сгенерировано автоматически;
- Сделать порт для FreeBSD.
- Найти (или организовать) список рассылки / IRC-канал / Jabber-конференцию / форум / вписать желаемое для обсуждения багов;
- Ускорить домашнюю связку trac+svn (где сейчас и живёт Lingua::RU::Inflect) либо перенести проект на какой-либо внешний более шустрый хостинг.
- Научить модуль склонять любые существительные и прилагательные — в конце концов, имена и фамилии склоняются аналогично: уже сейчас
inflect_given_name( DATIVE, qw/Синий чайник/ )
возвращаетqw/Синему чайнику/
. - Сделать блиц-доклад? :-)