質問: &z_substr($str, length($str) - 5, 5); } } ```
回答: せっかくdecodeしたものをわざわざencodeし戻したうえで処理しようとしているのがおかしいです。 perlで日本語文字列を処理(検索・分割・結合などすべて)したい場合は、かならずdecodeした文字列に対して行ってください。encodeを行うのは、最後にコンソールやファイルに出力する直前です。これはperlでの多言語処理を行う場合の鉄則で、例外はないと思って構いません。 逆にencodeせずに文字列を出力しようとするとエラーが出て怒られます。直前にencode関数をかますか、あるいはopenかbinmodeでデフォルトの出力コードを指定してやる必要があります。