On 10/11/06 1:32, Graham Barr <[EMAIL PROTECTED]> wrote:
> Except it is wrong. It does not honor the len argument
>
> ($x = _wrap("a" x 200, 40)) =~ s/ /./g;
> print "$x-\n";
>
> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
> aaaaaa
> .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
> aaaaaa
> .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
> .
> .
> .-
>
>
> Here is a fixed version I just checked in
>
> sub _wrap {
> my $len=$_[1];
> return $_[0] if length($_[0]) <= $len;
> use integer;
> my $l2 = $len-1;
> my $x = (length($_[0]) - $len) / $l2;
> my $extra = (length($_[0]) == ($l2 * $x + $len)) ? "" : "a*";
> join("\n ",unpack("a$len" . "a$l2" x $x . $extra,$_[0]));
> }
Good point. The LDIF spec's got this text, BTW:
---
discarded. Implementations SHOULD NOT fold lines in the middle
of a multi-byte UTF-8 character.
---
Does _wrap do that correctly?
Cheers,
Chris