C style로 escape된 스트링을 원상태로 되돌려주는 Perl 함수?

jick의 이미지

안녕하세요,

일을 하다 보면 UTF-8로 된 스트링을 C style로 escape한 결과물을 만날 때가 많은데요 (워메 이게 한국어여 영어여... -_-)

이를테면 "가나다" => "\xEA\xB0\x80\xEB\x82\x98\xEB\x8B\xA4" ...

이런 형태의 스트링이 escape 안된 스트링과 마구 섞여있습니다. 말하자면 이런 식이죠.

field1: 1
field2: "hello"
field3: "data = \xEA\xB0\x80\t..."

Perl에서 이런 식의 텍스트를 escape하기 이전의 형태로 바꾸는 간편한 방법이 없을까요?

Python에는 decode('string_escape')라는 좋은 함수가 있던데, 문제는 제가 python에 영 서툴러서요, 그때그때 필요한 방식으로 써먹기 어렵더군요.

seige18의 이미지


use CGI;
$url = "foobar.html";
print CGI::escapeHTML($url);
print CGI::escape($url);
print CGI::unescape($url);

amorette의 이미지

http://p3rl.org/Encode::Escape

use Encode::Escape;
$str = q{\xEA\xB0\x80\xEB\x82\x98\xEB\x8B\xA4};
print decode 'unicode-escape', $str;