>>207

use URI;
sub omiturl {
 my $uri = URI->new(shift);
 my $maxlen = shift;

 my $repl_q = quotemeta(my $repl = "...");
 my $path = $uri->path;
 until (length "$uri" <= $maxlen) {
  $path =~ s,\A/(?:$repl_q/)?[^/]+,/$repl, or last;
  $uri->path($path);
 }
 return "$uri";
}

手っ取り早くURI使ってるから$replに半角スペースとか使うと%20にされちゃうんで、
そのへん気に入らなかったら適当に直してくれ