Tels skribis 2007-03-31 18:38 (+0000): > * might not be the one who "decoded" $string or produced it even. > * do not know if I am passed a "text" string as there is only the > flag-you-should-not-know-about to distinguish these two. > (...) > Ok, and how am I supposed know that in: > sub dosomething {my $a = shift; } > $a is a text string or a binary string? :) No, not even the flag-you-should-not-know-about doesn't distinguish between the two. When you're writing a library function to handle arbitrary data, you'll have to pick sides, either text or binary. Fortunately, the choice is often very simple. When you can't choose between these two, you could write two functions: one for text data, one for binary data. Often you can write the text function simply by using the binary thing underneath, with a specified UTF encoding. If you're just serializing data, you could opt for storing the literal internal buffer along with the state of the UTF8 flag, or (exactly like the previous paragraph) pick any specific encoding and stick to that. If you happen to have a function in a current API (i.e. not a contrived one) for which you find it hard to decide, please let me know the details. I'll help you offlist. > Only if you consider your own code. But data is sometimes processed by other > code (Perl itself, some module etc.). Yes, indeed. This can be troublesome. Especially many, many modules still don't correctly support Unicode. I'm slowly but surely compiling a list at http://juerd.nl/perluniadvice. Wanna help? -- korajn salutojn, juerd waalboer: perl hacker <juerd@juerd.nl> <http://juerd.nl/sig> convolution: ict solutions and consultancy <sales@convolution.nl> Ik vertrouw stemcomputers niet. Zie <http://www.wijvertrouwenstemcomputersniet.nl/>.Thread Previous | Thread Next