in reply to Rounding to the nearest word

Joost's suggestion is good; the only problem with such solutions is if you occasionally have strings which don't have any/much whitespace, in which case the result can be shorter than desired. I've got a function in String::Escape on CPAN that checks for that:
use String::Escape qw( elide $Elipses ); local $Elipses; print elide( $mystring, 50 );