|
Perl, локаль и RE
|
|||
---|---|---|---|
#18+
Привет! Почему из-за русской буквы, стоящей после .+? неправильно работает RE? Дома в ActiveState Perl все работает правильно, а на американском сервере неправильно. Вот пример: $_='Результат поиска: найдено сайтов'; if (m!^Результат поиска.+?сайтов!m) - не находит. А замена с на \xF1 не помогает: if (m!^Результат поиска.+?\xF1айтов!m) - не находит. Если разделить пробелом, то уже находит: if (m!^Результат поиска.+? сайтов!m) Вот еще работающий вариант разделителя (прямо анекдот): if (m!^Результат поиска.+?\s{0}сайтов[^<]+<b>(\d+)</b>!m) Локаль выставляю так: use POSIX qw(locale_h); use locale; setlocale(LC_CTYPE, "ru_RU.cp1251"); И она работает (проверял в RE, uc и lc). Почему 8-мибитный символ влияет на результат? В других местах RE русские буквы не мешают работе даже без установки локали. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2004, 15:50 |
|
Perl, локаль и RE
|
|||
---|---|---|---|
#18+
sergivanovПривет! Почему из-за русской буквы, стоящей после .+? неправильно работает RE? Дома в ActiveState Perl все работает правильно, а на американском сервере неправильно. Локаль выставляю так: use POSIX qw(locale_h); use locale; setlocale(LC_CTYPE, "ru_RU.cp1251"); И она работает (проверял в RE, uc и lc). Почему 8-мибитный символ влияет на результат? В других местах RE русские буквы не мешают работе даже без установки локали. а она действительно есть там такая ? результат который козвращает setlocale не пробовал проверять ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2004, 10:38 |
|
|
start [/forum/topic.php?fid=23&fpage=506&tid=1479547]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
77ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 348ms |
total: | 522ms |
0 / 0 |