Удалить из текста определенные символы (Perl)
Извините, если мой вопрос вам покажется глупым, но я только начинаю работать в Perl.
Мне нужно из текста (который хранится в переменной $text) удалить следующие символы: ),(,",',«,»
Код указанный ниже почему-то ничего не удаляет:
Код:
$text =~ s/[\)\(\"\'\«\»]/""/;
Код:
$text =~ s/[\)\(\"\'\«\»]//g;
еще возможно не нужно некоторые символы экранировать, например кавычки треугольные ) но я не уверен. всё легко проверить :)
Теперь появился новый вопрос. После обработки текста данным кодом многие кириллические символы заменяются знаками вопроса.
Почему это происходит, и лечится ли это? Текст в utf8.
мало информации об окружении. у меня, например, такого не происходит ;)
Цитата: squirL
мало информации об окружении.
ОС - Mandriva Linux, Perl 5.8.8, вывод комманды locale:
Код:
LANG=ru_RU.UTF-8
LC_CTYPE=ru_RU.UTF-8
LC_NUMERIC=ru_RU.UTF-8
LC_TIME=ru_RU.UTF-8
LC_COLLATE=ru_RU.UTF-8
LC_MONETARY=ru_RU.UTF-8
LC_MESSAGES=ru_RU.UTF-8
LC_PAPER=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8
LC_ADDRESS=ru_RU.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_MEASUREMENT=ru_RU.UTF-8
LC_IDENTIFICATION=ru_RU.UTF-8
LC_ALL=
LC_CTYPE=ru_RU.UTF-8
LC_NUMERIC=ru_RU.UTF-8
LC_TIME=ru_RU.UTF-8
LC_COLLATE=ru_RU.UTF-8
LC_MONETARY=ru_RU.UTF-8
LC_MESSAGES=ru_RU.UTF-8
LC_PAPER=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8
LC_ADDRESS=ru_RU.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_MEASUREMENT=ru_RU.UTF-8
LC_IDENTIFICATION=ru_RU.UTF-8
LC_ALL=
Обрабатываемый текст и скрипт в utf8.
При выводе текста без удаления символов вышеупомянутым кодом такого не происходит.
хм... приведите полностью содержимое скрипта!
Код:
@words=();
$in_file = "./in.txt";
open(BASE,$in_file) || die "нет входного файла";
while(<BASE>)
{
$_ =~ s/[\)\(\"\'\«\»]//g;
@tmp = split(" ");
push(@words, @tmp);
}
print @words;
$in_file = "./in.txt";
open(BASE,$in_file) || die "нет входного файла";
while(<BASE>)
{
$_ =~ s/[\)\(\"\'\«\»]//g;
@tmp = split(" ");
push(@words, @tmp);
}
print @words;
Но как же тогда удалить 2 вышеупомянутых символа?
наверное посмотреть их hex/oct коды и по ним удалять... честно признаюсь, не делал такого :) может я ошибаюсь.
Код:
$_ =~ s/[\xC2AB\xC2BB\)\(\"\']//g