- if ($out) {
- if (!open(OUT, $out)) {
- $main::lxdebug->leave_sub();
- return "$out : $!";
- }
- } else {
- if (!open(OUT, ">-")) {
- $main::lxdebug->leave_sub();
- return "STDOUT : $!";
+ for (my $i = 0; $i < length($text); $i++) {
+ my $char = ord(substr($text, $i, 1));
+
+ if (($char < 32) || ($char > 127) || ($char == ord('?')) || ($char == ord('_'))) {
+ if ((defined $chars_left) && ($chars_left < 5)) {
+ $new_text .= "?=\n $q_start";
+ $chars_left = 75 - $l_start;
+ }
+
+ $new_text .= sprintf("=%02X", $char);
+ $chars_left -= 3 if (defined $chars_left);
+
+ } else {
+ $char = ord('_') if ($char == ord(' '));
+ if ((defined $chars_left) && ($chars_left < 5)) {
+ $new_text .= "?=\n $q_start";
+ $chars_left = 75 - $l_start;
+ }
+
+ $new_text .= chr($char);
+ $chars_left-- if (defined $chars_left);