Первый блин
Feb. 24th, 2010 11:58 amНа перлбурге обслуждали мы с Анатолием
sharifulinым его блиц-доклад про CPAN.
— А что хочешь выложить?
— Да есть у меня модуль для склонения русских имён.
— Так он, поди, у всех есть! :-) Каждый его пишет.
— Пишет, может, и каждый, да не каждый выкладывает.
— А что хочешь выложить?
— Да есть у меня модуль для склонения русских имён.
— Так он, поди, у всех есть! :-) Каждый его пишет.
— Пишет, может, и каждый, да не каждый выкладывает.
Мне известен лишь один модуль, который склоняет имена — 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/Синему чайнику/. - Сделать блиц-доклад? :-)
no subject
Date: 2010-02-24 09:01 am (UTC)Кстати, в посте надо сделать s/span.org/cpan.org/
s/span.org/cpan.org/g
Date: 2010-03-02 08:54 am (UTC)no subject
Date: 2010-02-24 04:10 pm (UTC)Превильная кодировка для строк в перле это...(surprise!)...внутреннее перловое представление строк. В принципе даже знать как оно там внутрю закодировано необязательно, главное что это строка символов и символы эти из набора ISO 10646 Universal Character Set (UCS). Но для более продвинутым будет полезно знать что таки да, внутреннее представление это тоже UTF-8 но со специальным флажком предписывающим трактовать данные строки как символьные, а не байтовые.
Re: Отфтопик
Date: 2010-02-25 12:30 pm (UTC)не разместивших ни одного модуля.
Планируешь размещать?
no subject
Date: 2010-02-24 07:01 pm (UTC)Насколько я понимаю, просто в начало файла Inflect.pm нужно дописать:
Re: =encoding
Date: 2010-02-25 10:17 am (UTC)=encoding, хотя остальные команды POD — знает.Русскоязычная документация
Date: 2010-02-26 10:56 am (UTC)В этом случае он будет первым размещен в разделе "Модули CPAN" который я собираюсь открыть на сайте http://perl5doc.ru
Re: Русскоязычная документация
Date: 2010-03-02 09:04 am (UTC)Re: Русскоязычная документация
Date: 2010-03-04 12:36 pm (UTC)Re: Русскоязычная документация
Date: 2010-03-04 01:17 pm (UTC)no subject
Date: 2010-02-27 10:30 pm (UTC)