\x

\x

[1] Perl 5.10.0 ですが、 {} の中身が16進数でなくても、 hex() した値でエラーなし (警告はあり) で処理されるみたいです。

[2] ES3 によると \x の後に16進数が2文字続かないとエラーですが、 どのブラウザでも16進数2文字が続かない場合には \ がない場合と同じ扱いになります。

<http://software.hixie.ch/utilities/js/live-dom-viewer/?%3Cscript%3E%0D%0Adocument.write%20(%22x1%22.match(%2F%5E%5Cx1%24%2F)%3F1%3A0)%3B%0D%0A%3C%2Fscript%3E>
<http://software.hixie.ch/utilities/js/live-dom-viewer/?%3Cscript%3E%0Adocument.write%20(%22xzz%22.match(%2F%5E%5Cxzz%24%2F)%3F1%3A0)%3B%0A%3C%2Fscript%3E>

正規表現ではない文字列リテラルでも WinIE 以外では同じことになります。 WinIE 7 ではエラーになります。

[3] Perl では、十六進数1桁が続く場合にはそれだけを十六進数エスケープの一部とみなします。 十六進数が続かない場合には、 \x00 とみなします。

[4] () <http://www.wdic.org/file/dic6form.txt>

・画面に出ない文字の表現は、\x{ 文字コード16進 }; とする。 例) \x{abab};

例えば沖縄のトカラ列島なら、吐\x{5676};喇列島、と書くことができる。

番号はUnicodeで、0~7fffffffまでの範囲である。