確か前スレにも全く同じ質問があったような。
$date = "20041205";

$date =~ s/^(¥d{4})(¥d{2})(¥d{2})/$1年$2月$3日/;
or
sprintf("%d年%d月%d日", unpack("A4A2A2", $date));