Perlでサマリーメソッド

今日は久々に、Perlでメソッド書いてみました。普段、Javaなので、Perl書くとかならず、+と.と間違えて文字えてしまいます。

これはどういうメソッドかといいますと、
区切りのテキストがあって、それのうち最初の3行だけ表示させたい場合に使います。一応(かなりの文字未対応)、1行当たりの最大文字数を制限かけれますので、CSSとかで指定した枠に綺麗に収めることも可能になるかなー(実際その注文が来て書きました)と思います。普通にsubstrですと高確率で化けます。
普段からPerlに触れてる方は、もっといいライブラリーを簡単に見つけることができそうですけどね。
ちなみにJavaは文字列UTFなので、別のアプローチになります。PerlでUTFはほとんど経験がないため比べることはできませんが。

以下のページを参考にしました。
http://www.rescue.ne.jp/CGI-BBS/cgi/perl/20010124184257.shtml

#local method
require "jcode.pl";
$jp="あtest1
日本語
tあest3";
$jp=&jcode::euc($jp);

$test=summary($jp,3,6,"
");
print &jcode::sjis($test)."\n";


#use EUC & not hankaku.
sub summary{
my($text,$lineCount,$maxCharacter,$lineSeparator)=@_;
my($ret);
@summary_lines=split($lineSeparator,$text);
$summary_lines_length=@summary_lines;


for($i=0;$i<$lineCount && $i<$summary_lines_length;$i++){
if($maxCharacter==0){
$ret.=$summary_lines[$i].$lineSeparator;
}else{
if(length($summary_lines[$i])<$maxCharacter){
$ret.=$summary_lines[$i].$lineSeparator;
}else{
$ret.=minString($summary_lines[$i],$maxCharacter).$lineSeparator;
}
}
}
return $ret;
}

#use EUC & not hankaku.
sub minString{
my($text,$min)=@_;
my($ret)="";
my($isFirst)=0;
my($i);
my($ch);
for($i=0;$i<$min && $i