For strings Perl uses two encodings internally, one is like UTF-8 (with some differences), the other one isn't. That's supposed to be completely transparent for the programmer. use utf8 just tells the compiler that the source code is in UTF-8. It doesn't say anything about how the strings are going to be stored internally.