sub shorten { local $_ = shift; my $len = shift; my $pos; return $_ if $len >= length; $len -= 3; $pos = pos while /\w(?=\s)/g && $len >= pos; $pos ||= $len; substr($_, 0, $pos)."..."; } print shorten("misunderestimate", 15), "\n"; print shorten("all work and no play makes MeowChow a dull boy", 15), "\n"; print shorten("imapirateiamiam", 15), "\n"; #### $pos = rindex $_, " ", $len; $pos = $len if $pos < 0;