LINUX.ORG.RU

Perl. Обработка hex.


0

0

Hi!

Такая задачка.. К примеру есть строка 'Hello!'. Из нее нужно вырезать все символы 0x6C (т.е все буквы 'l').

Подскажите пожалуйста как это реализовать. Проблема именно в том чтобы использовать шестнадцатеричное значение(т.е вместо 'l' может быть например "стрелочка_влево" - 0x2190, и всякие другие "кривые" символы)

Спасибо!

Ответ на: комментарий от anonymous

>s/\x{2190}//g

Блин. Это работает, но, по-моему, только для ASCII... т.е только для значений 0x00-0xFF... К примеру:
========
a.pl:
---
#!/usr/bin/perl

use strict;

my $str1="ФЫВ";
my $str2="ASD";

$str1=~s/\x{424}//g;
$str2=~s/\x{41}//g;

print "$str1\n$str2\n";
---

%./a.pl
ФЫВ
SD
========

т.е буковка 'Ф' не заменилась...

ЗЫ: используется UTF8

IPFreely ★★
() автор топика
Ответ на: комментарий от IPFreely

Я на теже грабли как-то наступал. Думаю правильно или разбить на два
байта указатель замены:

$str1=~s/\xd0\xa4//g;

Кстати, русская Ф в utf-8 это именно 0xD0A4, а не 424 как у тебя.

Или если всё в utf-8, в том числе и текст, то можно следующее сделать:

http://lists.debian.org/debian-russian/2005/07/msg00169.html

То есть,

#!/usr/bin/perl

use strict;
use utf8;

my $str1="п╓п╚п▓";
my $str2="ASD";

$str1=~s/п╓//g;
$str2=~s/\x{41}//g;

print "$str1\n$str2\n";

anonymous_incognito ★★★★★
()

Все! Всем спасибо!

IPFreely ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.