RE: Net::LDAP::Entry - RFC

"Burns, Victor M" via perl-ldap <[email protected]> Tue, 02 Jan 2018 13:36:09 +0000
Newsgroups gmane.comp.lang.perl.modules.ldap
Message-ID <B0C23573B268484A8C732E3C1C2A105E01EE7FF5@smtp_mail.bankofamerica.com>
Thanks for getting back to me. I suspect I confused the version number. As you know perl-ldap is a large set of classes. I am using the latest perl-ldap-0.65 and the class in Question Net::LDAP::Entry is 0.27 and is confirmed both on my system and on CPAN at this link; http://search.cpan.org/~marschap/perl-ldap-0.65/lib/Net/LDAP/Entry.pod which shows it is version 0.27 and is part of perl-ldap-0.65

As I mentioned it might be nice if the ldif method supported additional options. I found it useful to have a wrap => 0 option to disable wrapping. For now I get around the issue by cheating. In a class I've written I fudge a new method, ldif_nowrap, into the Net::LDAP::Entry namespace, "God bless PERL!" that hardcodes the ( wrap => 0 ) into it and I call it in the place of the regular ldif method. I do it this way and avoid the Perl redefined subroutine warning all together. I'm a huge fan of strict and warnings! I don't write anything without them. :)


package Net::LDAP::Entry;

use strict;
use warnings;

sub ldif_nowrap
{
  my $self = shift;
  my %opt = @_;

  require Net::LDAP::LDIF;
  open(my $fh, '>', \my $buffer);
  my $change = exists $opt{change} ? $opt{change} : $self->changes ? 1 : 0;
  my $ldif = Net::LDAP::LDIF->new($fh, 'w', wrap => 0, change => $change);
  $ldif->write_entry($self);
  return $buffer;
}


But it would be just as easy for the original method to be updated to look something like this. I've not tested this but it visually looks okay.

sub ldif
{
  my $self = shift;
  my %opt = @_;

  require Net::LDAP::LDIF;
  open(my $fh, '>', \my $buffer);
  my $change = exists $opt{change} ? $opt{change} : $self->changes ? 1 : 0;
  my @wrap = exists $opt{wrap} ? ( wrap => $opt{wrap} ) : ();
  my $ldif = Net::LDAP::LDIF->new($fh, 'w', @wrap, change => $change);
  $ldif->write_entry($self);
  return $buffer;
}


Best Regards,
Victor Burns


-----Original Message-----
From: Peter Marschall [mailto:[email protected]] 
Sent: Thursday, December 28, 2017 6:26 AM
To: [email protected]; Burns, Victor M <[email protected]>
Subject: Re: Net::LDAP::Entry - RFC

Hi Victor,

Am Donnerstag, 27. Juli 2017, 13:42:13 CET schrieb Burns, Victor M via perl-
ldap:
> I've been working with the Net::LDAP::Entry class.
> I think it would be keen/natural if the ->ldif method supported additional
> Net::LDAP::LDIF options. For example:
> print $entry->ldif( wrap => 0 );
> I inspected the method and it seems that only the change option is
> supported. I have version 0.27

Sorry for anwering this late.

As Chris ridd wrote 0.27 is veeeeery old - from 2003 ,if I remember correctly.
Since then perl-ldap gained lots of features.
Please do yourself a favour and update to a recent version.

While not directly fulfilling your request, the newer versions have an 
extended Net::LDAP::Entry->update() method, that allows using an LDIF file as 
a target to write to.

Best regards
PEter








-- 
Peter Marschall
[email protected]

----------------------------------------------------------------------
This message, and any attachments, is for the intended recipient(s) only, may contain information that is privileged, confidential and/or proprietary and subject to important terms and conditions available at http://www.bankofamerica.com/emaildisclaimer.   If you are not the intended recipient, please delete this message.