Hi,
ah! That makes perfect sense, thanks for clarifying matters! :)
Ok, then it seems we need to have a builtin, such that: new_builtin(0xE2) ~ new_builtin(0x82) ~ new_builtin(0xAC) eq "\xE2\x82\xAC"
I think - conceptually - it cannot be done, because you cannot store a byte in a character string, and ~ is for concatenating character strings, not byte strings. In fact, you can do it, because Pugs' (and as I know Parrot's) internal string representation is UTF-8 (but what about other compiler destinations, like machine code, JVM, .Net?), and you can put bytes into it. But I think it would be a bad decision to do so, because what if in the future you would like to change this behaviour? The system should be totally transparent and virtual, and it sounds like a hack for me.
I think it should be done in CGI.pm.
Bye, Andras