perl 5.8 から Unicode 対応が強化されている。いままでは文字列なのか、たんなるバイト列なのかは区別されていなかった。そこで、日本語を扱うのであれば、EUC-JP のような encoding を使い、それをただのバイト列として扱うのが定番な方法であった。
最近の perl では文字列についてもstring なのか octets なのかを明確に区別するためのフラグ (UTF-8 フラグ) があり、文脈によってはその違いが重要となる。
octets であるけど UTF-8 で encoding されてい「文字列」を string としてあつかうには、Encode::decode_utf8 を、string である文字列を UTF-8 のoctets にするには Encode::encode_utf8 を使う。