- my $new_text = "$q_start";
- $chars_left -= $l_start if (defined $chars_left);
-
- 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);
- }
- }
-
- $new_text .= "?=";
-
- $main::lxdebug->leave_sub();
-
- return $new_text;