use utf-8;を外したら正常に動きました。

文字列に漢字2文字以上の場合または、
カタカナ3文字以上の場合は記録したいのですが、
addWord($c, 2, $word) if($word =~ m/^\p{InCJKUnifiedIdeographs}{2,}$/g);
addWord($c, 2, $word) if($word =~ m/^\p{InKatakana}{3,}$/g);

この正規表現では取得でき