« 地雷原Windows XP SP2を入れてみた。 | メイン | はてなの月間PVは1億6,900万 20%強はロボット »

日本語文字列を切り詰めるPerlの関数

日本語文字列を切り詰めるPerlの関数。EUC-JP限定
Perlメモの文字が途切れているか判定するを参考にしました。

sub jtruncate{
	my($str,$n)=@_;
	$n ||=200;
	return $str if(length($str) <= $n);
	my $substr = substr($str,0,$n-3);
	if($substr =~ /\x8F$/ or $substr =~ tr/\x8E?xA1-\xFE// % 2){
		chop $substr;
	}
	$substr .= "...";
	return $substr;
}
$short = &jtruncate($long,$length)


CPANにはLingua::JA::Jtruncateというモジュールがありますが、これは、jcode.plを利用して文字コードも判定してくれるみたいです。