![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| Даниил |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 17.7.2006 Репутация: нет Всего: нет |
Вопрос в следующем:
Вот есть некий фрагмент кода == use Regexp::Common qw[Email::Address]; use Email::Address; ... ... my $text = read_textfile($fullpath); ###ищем e-mail'ы в файле my (@found) = ($text=~ m/($RE{Email}{Address})/g); my (@addrs) = map $_->address, Email::Address->parse("@found"); ##ищем числа в файле my (@d) = ($text =~m/(\d+)/g); ###Функция считывания из файла sub read_textfile { my $filename = $_[0]; my $str = ''; my @arr; if (open(TEXT_FILE, $filename)) { @arr = <TEXT_FILE>; close(TEXT_FILE); } else { print "error reading $filename : $! <BR>"; } return join('',@arr); } == Всё работает хорошо, если мы имеем обычный ANSI-файл. А если файл записан в UTF-16, то ничего не работает. Вопрос - что нужно, чтобы регулярные выражения и Regexp::Common работали и в UTF-16? Документацию по работе с Unicode в Perl читал, но не очень понял, как же быть именно с моим случаем. |
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
можно perldoc Encode отличный модуль ;) (имхо самый практичный)
можно также читать юникод через файлов. манипулятор:
и совет по поводу метода чтения файла, который ты использовал... поиск на форуме поможет найти "лучший" вариант ;) |
|||
|
||||
| Даниил |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 17.7.2006 Репутация: нет Всего: нет |
nitr,
В случае, когда я пишу open TEXTFILE, "<:encoding(UTF-16)", $filename; у меня из файла вообще ничего не считывается. |
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
ну во-первых используем подсветку (благо отлично реализована на форуме)
я же изначально сказал, можно так же использовать модуль, для этого в командной строке выполнить: perldoc Encode а так... ...
а точно текст UTF-16 поиск на форуме, тут очень много уже обсуждали, а так читайте perldoc Encode Это сообщение отредактировал(а) nitr - 18.7.2006, 19:31 |
|||
|
||||
| Даниил |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 17.7.2006 Репутация: нет Всего: нет |
nitr,
поиском на форуме искал. Про регулярные выражения и UTF-16 не нашёл. Да, точно UTF-16, а не UTF8. На каждый символ под два байта, в т.ч. и латинские. perldoc Encode прочитал. Опять-таки, как применить к регулярным выражениям - не нашёл. |
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
пока не пойму что и для чего... в регулярках зачем применять... работай с текстом, а потом кодируй и декодируй ;)
my $text = read_textfile($fullpath); после этой строки обрабатывай переменную $text |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |