2バイト文字切り落とし。

id:kopug のコードそのままやけど。Template::Filters::LazyLoader使用。

sub fd_make_it_short{
    my $s   = shift;
    my $num = shift;

    return sub {
        my $var       = shift;
        my $var_utf8  = Encode::decode('utf-8', $var);

        return length $var_utf8 > $num
               ? Encode::encode('utf-8', substr( $var_utf8, 0, $num ) ) .'...'
               : $var
               ;
}
[% 'ああああああああああああああああああ' | make_it_short(5) %] 

あああああ...