Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Кодировки и регулярные выражения


Автор: infarch 17.6.2010, 11:40
Помогите пожалуйста решить такую проблему:

У меня есть файл в utf8 содержащий строки типа: "<strong>Головной офис</strong></a><span..."
И вот в этих строках мне надо определить встречается ли словосочетание "Головной офис". Однако использование регулярного выражения ничего не дало:

if ( $str =~ /Головной офис/ ) ...

не срабатывает :( Не хочет искать любые русские символы.

Подскажите пожалуйста, чего тут не хватает. На всякий случай вот более полный вариант кода:

Код


use strict;
use warnings;

use utf8;

open SRC, 'output/bank_10255.xml';
while ( my $str = <SRC> ){
    if ( $str =~ /Головной офис/ ){
        print "Bingo!\n";
    }
}
close SRC;




Автор: vadiml 17.6.2010, 11:56
То, что Вы написали 
use utf8 
ещё не значит что внутри $src строка тоже в utf8.
Надо ещё и при открытии файла указать как его считывать.

use utf8 только автоматически присваивает флаг utf8 текстовым строкам в кавычках.
В Вашем случае -- это 'output/bank_10255.xml',  /Головной офис/ и "Bingo!\n"

Автор: kavkaz 17.6.2010, 12:15
Используйте
Код

use utf8;
use open qw(:std :utf8);

Автор: infarch 17.6.2010, 12:37
Bingo! smile Оба варианта вполне подошли. огромное всем спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)