Русская р в perl

Все о программировании под *nix
Аватара пользователя
phaoost
Неотъемлемая часть форума
Сообщения: 289
Зарегистрирован: 12 янв 2005, 01:22
Откуда: Minsk
Контактная информация:

Русская р в perl

Сообщение phaoost »

натолкнулся на странный глюк. если слово содержит маленькую русскую р, то /\w+/ станоситься false. пришлось вставлять \xf0. протестил все остальные русские буквы - тот же эффект на 'э'. с остальными - всё нормально. LC_TIME="ru_RU". поставил ru_RU.CP1251 - всё стало нормально. в чём проблема с ru_RU?
cheers,
phaoost.

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

ru_RU - это с какой кодировкой-то? Бывает koi,iso,cp1251,utf8?
Опыт растет прямо пропорционально выведенному из строя оборудованию

Аватара пользователя
phaoost
Неотъемлемая часть форума
Сообщения: 289
Зарегистрирован: 12 янв 2005, 01:22
Откуда: Minsk
Контактная информация:

Сообщение phaoost »

не знаю. дефолтная :-) вот и вопрос - что же оно по дефолту ставит, если все русские, кроме двух, корректно определяются.
cheers,
phaoost.

Аватара пользователя
red f0x
Неотъемлемая часть форума
Сообщения: 338
Зарегистрирован: 08 мар 2004, 01:41

Сообщение red f0x »

гы, подземный стук, типа?
(А ваще в linux, и вероятно, не только в нём, по умолчанию кодировка koi8-r, наерно предлагается при конфигурации console-cyrillic?) :P
(лично я не помню уже что она (console-cyrillic) там мне пыталась по своему усмотрению подсунуть - дело то, кажися в ней?)
Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev

Аватара пользователя
Eugene
Маньяк
Сообщения: 162
Зарегистрирован: 13 фев 2004, 15:02
Откуда: Minsk
Контактная информация:

Сообщение Eugene »

<b>phaoost</b>, а в скрипте поддержка локали включена?
/born to bash/

[ updated: 2006-02-21 ]

/born to zsh/

Аватара пользователя
phaoost
Неотъемлемая часть форума
Сообщения: 289
Зарегистрирован: 12 янв 2005, 01:22
Откуда: Minsk
Контактная информация:

Сообщение phaoost »

Eugene, отож. просто я её включал как ru_RU и происходила описанная весчь. включил как ru_RU.CP1251 b всё прекратилось. любопытно, почему так было.
cheers,
phaoost.

Аватара пользователя
Eugene
Маньяк
Сообщения: 162
Зарегистрирован: 13 фев 2004, 15:02
Откуда: Minsk
Контактная информация:

Сообщение Eugene »

Есть предположение.
Когда ты указывал локаль ru_RU perl мог брать какую-нибудь русскую локаль, но не CP1251. Для этой локали символы с кодами, соответствующими символам "р" и "э" могут и не являться alphanumeric'ами (поэтому и не матчатся \w). Чтобы выяснить точно, нужно узнать какая локаль берется перлом при указании ru_RU и посмотреть файл этой локали на предмет символов с кодами, соотв. "р" и "э" в CP1251.
/born to bash/

[ updated: 2006-02-21 ]

/born to zsh/

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

use locale есть ? perldoc locale прочитан?
Опыт растет прямо пропорционально выведенному из строя оборудованию

bazil
Неотъемлемая часть форума
Сообщения: 879
Зарегистрирован: 18 дек 2003, 23:56

Сообщение bazil »

что написано в locales.build то и собрано имхо
I did a 'zcat /vmlinuz > /dev/audio' and I think I heard God...

Аватара пользователя
Eugene
Маньяк
Сообщения: 162
Зарегистрирован: 13 фев 2004, 15:02
Откуда: Minsk
Контактная информация:

Сообщение Eugene »

Согласен с Llama.
phaoost, поясни как ты в перле юзаешь поддержку локали?
Надо ее просто включить через use locale. А ты похоже делаешь setlocale, что ни есть правильно.
А вообще-то на работу регекспов LC_TIME влиять не должен никак, влияет LC_CTYPE.
/born to bash/

[ updated: 2006-02-21 ]

/born to zsh/

Аватара пользователя
phaoost
Неотъемлемая часть форума
Сообщения: 289
Зарегистрирован: 12 янв 2005, 01:22
Откуда: Minsk
Контактная информация:

Сообщение phaoost »

в исходнике:
use locale;
setlocale (LC_CTYPE,"ru_RU");
Eugene, про LC_TIME попутал.
cheers,
phaoost.

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

phaoost, ru_RU - это сферический конь в вакууме. то, что является \w для koi8 не обязано быть тем же самым
w для cp1251. просто посмотри на этой системе, куда в локалях указывает симлинк ru_RU.
Опыт растет прямо пропорционально выведенному из строя оборудованию

Ответить