in reply to using sendmail with perl, second email does not recognize anything but To:

If a line terminator in $string is the source of your problems, your regex will not correct it. I believe you need to force the substitution to treat the string as a single line and then replace the characters that are potential problems. In some scenarios, it might be better to replace runs of line terminators with a space, though that will depend on context. Also, it would be better to assume that there may be more than one line terminator. Example:
#!/usr/bin/perl $string = "foo bar"; $string =~ s/\s+$//; print $string, "\n\n"; $string =~ s/[\r\n]+/ /gs; print $string, "\n\n";
This produces:
foo bar foo bar
NOTE: It is always dangerous to directly insert user input in a mail header; user input warrants careful scrutiny. The documentation on tainting in the perlsec reference is very helpful on this subject.