● perl の場合
◆ バックスラッシュエスケープ→生文字データ
これが最短か。
▼ perl でバックスラッシュエスケープ→生文字データ
my %ch =('a'=>"\x07",'e'=>"\x1B",'n'=>"\x0A",'r'=>"\x0D",'t'=>"\x09"); s/\\([aenrt]|[0-7]{3}|x[\da-fA-F]{2})/1<length($1)?chr(oct("0$1")):$ch{$1}/eg;
oct() 関数は,本来は八進数文字列を数値に変換する関数だが,引数が“0x”で始まる時は十六進数として扱う。実質的に eval() と似た働き。
UTF-8 も1バイトずつエスケープされていた場合は元に戻せるはず。一方“\u”で始まる UNICODE には未対応。