Есть файл скажем содержащий это 20 ef f0 e8 20, нужен на perl скрипт который бы заменял 16-ричный код на соответствующий символ из кодовой таблицы cp1251 скажем (также cp866).
Как это сделать наиболее грамотно и рационально, не городить же вещи типа:
$str=~ s/ef/п/
$str=~ s/f0/р/
$str=~ s/e8/и/
и т.д.
Может быть есть готовая функция?
>Есть файл скажем содержащий это 20 ef f0 e8 20, нужен на
>perl скрипт который бы заменял 16-ричный код на соответствующий символ из
>кодовой таблицы cp1251 скажем (также cp866).
>Как это сделать наиболее грамотно и рационально, не городить же вещи типа:
>
>$str=~ s/ef/п/
>$str=~ s/f0/р/
>$str=~ s/e8/и/
>и т.д.
>Может быть есть готовая функция?Есть модуль Encode.
Почитал про модуль, что-то не очень понимаю чем он мне может помочь.
Можно поконкретнее ткнуть носом?
>Почитал про модуль, что-то не очень понимаю чем он мне может помочь.
>
>Можно поконкретнее ткнуть носом?sproot@matrix:tmp$ cat test.txt
20 ef f0 e8 20
sproot@matrix:tmp$ perl -MEncode -i'.orig' -ne '$_=~s/([[:xdigit:]]{2})/chr(hex($1))/eg; print decode("cp1251", $_);' test.txt
Wide character in print at -e line 1, <> line 1.
sproot@matrix:tmp$ cat test.txt
п р и
спасибо.