in reply to decode/encode - can someone explain this please
why it is neccessary to first call decode
Because the string needs to have the utf8 flag turned on for Perl to treat it as a string of characters. And decoding the input (even if it's already in UTF-8, which very closely resembles to what Perl is using internally) is the safest way to turn on the utf8 flag.
Generally, for most practical purposes, it's best to think of Perl's internal unicode encoding as some opaque format that's not your business, and simply decode your inputs and encode your outputs.
(What is considered "input" depends on the context. From what you say, we can infer that TT encoded its output as UTF-8 (turning off the utf8 flag), so you have to treat it as if it were any other external UTF-8 encoded input, even if it's just being passed around program-internally.)
|
|---|