Автор Тема: 8-битные символы в RE  (Прочитано 3146 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн SergIvanov

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 1
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
8-битные символы в RE
« : 29 Декабря 2004, 18:39:18 »
Привет!

Кто объяснит, почему этот скрипт пишет 4 раза found в ActiveState Perl и 4 раза not found на Юниксе (perl5.6)? Кодировка Windows, выставление локали не помогает. Хотя здесь по идее и не должно быть зависимости от локали. Я вставил use bytes, как советовали мастера от перла, чтобы символы понимались как однобайтовые, но это не помогло. Что надо, чтобы символы в re понимались как однобайтовые? Мастера перла здесь пасуют. Larry Wall, конечно, отвечать мне не станет.
Как видите, замена русской с на \\xF1 не помогает. Если разделить ? и с пробелом, то уже находит:
/^Результат поиска.+? сайтов/m
Вот еще работающий вариант разделителя:
/^Результат поиска.+?\\s{0}сайтов/

Сергей

#!/usr/bin/perl -w
use strict;
use bytes;

print "Content-Type: text/html\\n\\n";
print "\\n";

$_=\'Результат поиска: найдено сайтов\';
if (/^Результат поиска.+?сайтов/m)
{ print "1. Found
\\n";
} else
{ print "1. Not found
\\n";
}

if (/^Результат поиска.+?\\xF1айтов/m)
{ print "2. Found
\\n";
} else
{ print "2. Not found
\\n";
}

if (/^Результат поиска.+?сайтов/m)
{ print "1. Found
\\n";
} else
{ print "1. Not found
\\n";
}

if (/^Результат поиска.+?\\xF1айтов/m)
{ print "2. Found\\n";
} else
{ print "2. Not found\\n";
}
print \'\';

Оффлайн ondr

  • Модератор
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 440
  • +0/-0
  • 0
    • Просмотр профиля
8-битные символы в RE
« Ответ #1 : 30 Декабря 2004, 09:25:50 »
Увы, похоже на баг. На perl5.6.1 и более ранних версиях не находит ни на win ни на *nix платформе. Но на версиях 5.8.x отрабатывает успешно, поэтому писать в support скорее всего уже бесполезно.

ps: про use bytes тебе зря советовали. Убери, если твой скрипт не связан с юникодами
0 OK, 0:1

Оффлайн Yukko

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1586
  • +0/-0
  • 0
    • Просмотр профиля
    • http://estrabota.com.ua
8-битные символы в RE
« Ответ #2 : 30 Декабря 2004, 11:20:05 »
SergIvanov
просьба не забивать своими постами чужие темы, которые не касаются твоей проблемы.
работа в Украине

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28