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