NET::LDAP Search Works, pop_entry problematic #2

[email protected]
Newsgroups gmane.comp.lang.perl.modules.ldap
Message-ID <570058085.200919.1278527757302.JavaMail.root@sz0046a.emeryville.ca.mail.comcast.net>

Thanks. Using the pop-entry line does in fact return all the DN's from the input file. Unfortunately, once I try to print the next two lines and insert more code to iteratively lookup and print a dn, everything breaks. The goal is to print to a file in the following order: 



search dn result from input1 

changetype: modify 

replace: manager 

manager: "search dn result from input 2"                     ;i've commented this code till i get the first 3 lines working 



Here's the code I have. Using your recommendation failed with the below errors (tried dn and $dn). Thanks for looking, again. 



#! perl 

use strict; 
use warnings; 
use diagnostics; 

use Net::LDAP; 
use Net::LDAP::Entry; 
use Net::LDAP::Search; 
use Net::LDAP::LDIF; 

open PERSON, "<", "ou3" or die "Cannot open 'ou3': $!"; 
open MGR, "<", "ou8" or die "Cannot open 'ou8': $!"; 
open OUT, ">", "ldif3.ldif" or die "Cannot open 'ldif3.ldif': $!"; 

my $HOST = "1"; 
my $ADMIN = "cn=admin,DC=corp"; 
my $PWD = "0"; 
my $BASEDN = "DC=corp"; 

my $ldap = Net::LDAP->new("$HOST", port=>389) or die "$@"; 
my $dn = $ldap->bind("$ADMIN", password=>"$PWD"); 
my $mgrdn = $ldap->bind("$ADMIN", password=>"$PWD"); 
my @attr = "1.1"; 
my $result = Net::LDAP::LDIF->new( "ldif3.ldif", "a", wrap=>40 ); 
my $entry; 
my $entry2; 



while (<PERSON>){ 
chomp; 
$dn = $ldap->search( #return only the employeeID DN 
        base => "$BASEDN", 
        filter => "(&(objectClass=user)(employeeID=$_))", 
        scope => "sub", 
        attrs => ['1.1'] 
        ); 

        $dn->code && die $dn->error; 

#        $entry = $dn->pop_entry; 
        $entry->dn; 
        print $result->write_entry($entry); 
        print OUT "changetype: modify", "\n"; 
        print OUT "replace: manager", "\n"; 
} 
#continue; 
#while ($mgr){ 
#while (<MGR>){ 
#chomp; 
#$mgrdn = $ldap->search( #return only the manager DN 
#        base => "$BASEDN", 
#        filter => "(&(objectClass=user)(employeeID=$_))", 
#        scope => "sub", 
#        attrs => [@attr], 
#        ); 
#        $mgrdn->code && die $mgrdn->error; 
#        foreach $entry2 ($mgrdn->entries) { $entry2->dump; } 
#        #$entry2 = $mgrdn->pop_entry(); 
#        #$result->write_entry($entry2); 
#        #print OUT $entry2; 
#        #print OUT "manager: $entry2", "\n"; 
#} 
#} 

$dn = $ldap->unbind;  #session ends 

close OUT or die "Cannot close in-memory file: $!"; 
close MGR or die "Cannot close in-memory file: $!"; 
close PERSON or die "Cannot close in-memory file: $!"; 







Here's the errors: 



C:\Temp10>c:\perl\bin\perl ldif3a.pl 
Can't call method "dn" on an undefined value at ldif3a.pl line 56, <PERSON> 
        line 1 (#1) 
    (F) You used the syntax of a method call, but the slot filled by the 
    object reference or package name contains an undefined value.  Something 
    like this will reproduce the error: 

        $BADREF = undef; 
        process $BADREF 1,2,3; 
        $BADREF->process(1,2,3); 

Uncaught exception from user code: 
        Can't call method "dn" on an undefined value at ldif3a.pl line 56, <PERS 
 at ldif3a.pl line 56 

C:\Temp10>edit ldif3a.pl 

C:\Temp10>c:\perl\bin\perl ldif3a.pl 
Can't call method "Net::LDAP::Search=HASH(0x1874a24)" on an undefined value at 
        ldif3a.pl line 56, <PERSON> line 1 (#1) 
    (F) You used the syntax of a method call, but the slot filled by the 
    object reference or package name contains an undefined value.  Something 
    like this will reproduce the error: 

        $BADREF = undef; 
        process $BADREF 1,2,3; 
        $BADREF->process(1,2,3); 

Uncaught exception from user code: 
        Can't call method "Net::LDAP::Search=HASH(0x1874a24)" on an undefined va 
 at ldif3a.pl line 56
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.