Distribution: perl-ldap-0.33
Perl: 5.8
OS: Windows 2000

Hi,
I found that writing an LDIF record with very long attribute values is
extremely slow. I could narrow this problem down to the function _wrap()
in the LDIF.pm module. It seems that wrapping the value is quite CPU
extensive.
The _wrap() routine isn't very efficient in handling long strings. The
substr() function seems to be very slow in this case. Using my rewritten
_wrap() function speeds up things quite well.
Could you please provide this patch to the next release? We've been using
this improved function for a while now qith great pleasure.

Greetings,
Robert

---- old _wrap() -----------------------------
sub _wrap {
  if($_[1] > 40) {
    my $pos = $_[1];
    while($pos < length($_[0])) {
      substr($_[0],$pos,0) = "\n ";
      $pos += $_[1]+1;
    }
  }
  $_[0];
}
---- new _wrap() -----------------------------
sub _wrap {
    my $string=$_[0];
    my $len=$_[1];
    my $a=(length($string)-$len>0);
    my $b=((length($string )-$len)/($len-1));
    join("\n ",unpack("a78" x $a . "a77" x $b . "a*",$string));
}

Reply via email to