my $urls = '(http|telnet|gopher|file|wais|ftp|mailto)';
my $ltrs = '\w';
my $gunk = '/#~:.?+=&%@!\-';
my $punc = '.:?\-';
my $junk = qq~="'>~; # added
my $any = "${ltrs}${gunk}${punc}";
$text =~ s{([^$junk]\s*\b)($urls:[$any] +?)(?=[$punc]* [^$any]|$) }{$1$2}igox;
$text =~ s{^($urls:[$any] +?)(?=[$punc]* [^$any]|$) }{$1}igox;