Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Perl игнорирует локаль 
:(
    Опции темы
lialimar
Дата 3.12.2008, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 3.12.2008

Репутация: нет
Всего: нет



Имеем RHEL4 (на всякий случай)
Локаль настроена на ru_RU.UTF-8. В системе с локалью все чики-пуки.
Элементарный скрипт
===
#!/usr/bin/perl -w
use strict;
use locale;
use POSIX qw(locale_h);
setlocale(LC_CTYPE, "ru_RU.utf8");
my $str = "Пример текста";
print uc($str), "\n";
$str =~ s/\w/R/g;
print $str, "\n";

===
Должен выдавать
   ПРИМЕР ТЕКСТА
   RRRRRR RRRRRR


Однако фиг там. Выдает неизменную строку. Оба раза. То есть не воспринимает 
буквы как легальные буквы (word character). Аналогично при чтении строк из 
файла.

Вопрос: где я не прав?
(папка /usr/lib/locale/ru_RU.utf8 существует и заполнена нужными файлами 
LC_*) 


PM MAIL   Вверх
Nuclon
Дата 3.12.2008, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 13.8.2008
Где: Днепропетровск, У краина

Репутация: нет
Всего: нет



добавьте в начало скрипта
Код

use utf8;


http://perldoc.perl.org/utf8.html
PM MAIL   Вверх
lialimar
Дата 3.12.2008, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 3.12.2008

Репутация: нет
Всего: нет



Спасибо. С использованием констант из текста помогло.
Теперь разбираемся с аналогичной проблемой при чтении строк из файла, который изначально в utf8.

...
С utf8 файлом работает и так, если указать -CD в параметрах запуска.
Но ругается:
"Wide character in print at ./testfile.pl line 11, <LINES> line 2."
Я с ним полностью согласен. Но ругаться-то зачем? smile


Это сообщение отредактировал(а) lialimar - 3.12.2008, 11:13
PM MAIL   Вверх
Nuclon
Дата 3.12.2008, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 13.8.2008
Где: Днепропетровск, У краина

Репутация: нет
Всего: нет



Код

binmode(STDOUT, ":utf8");

должно помочь
PM MAIL   Вверх
kavkaz
Дата 3.12.2008, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 26.12.2007

Репутация: 1
Всего: 2



тут конечно не очень привычно читать, но ВСЕ что надо - есть, жаль что пришлось съесть все эти "собаки" прежде чем наткнулся на эту ссылку

http://taka.xfo.cc/utf8.xul


PM MAIL ICQ Skype   Вверх
ginnie
Дата 5.12.2008, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



Другой, более удобный, чем презентация выше, вариант статьи Владимира Перепелицы  "UTF Perl Practice, или как использовать UTF-8 в перле".


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0424 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.