Hi Andrej, On Wednesday, 28. February 2007 04:05, Andrej Ricnik-Bay wrote: > Sorry for asking something that's probably trivial; I'm trying to > pass an $entry to a series of functions that do some checking > and build an array for a modify operation as they go. > > But for some reason I can't seem to access values. > > if( $found_empNo == 1 ){ > update_edir( $entry, $hrEmpNo ); > throw_to_syslog("Found employeeNumber $empNo in eDir for > user $cn; checking to see whether data needs updating") if ( $debug > ); > } > > and update_edir: > sub update_edir{ > my $entryptr=$_[0]; > my $getem=$_[1]; > my $newmesg; > my @newattrs; > # bless $entryptr, "Net::LDAP::Entry";
Thank god this is commented. Never blindly re-bless something. The $entryptr is already blessed ! > if(! defined $entryptr ){ > return; > } > if(! defined $getem ){ > return; > } > > # testing for the 'interesting' fields from HR > chkPrfName( $entryptr, ${$hr{ "$getem" }}[3], [EMAIL PROTECTED] ); > ... > chkMngrPosID( $entryptr, ${$hr{ "$getem" }}[18], [EMAIL PROTECTED] ); > } > > And one of the other routines: > sub chkPrfName { > # my ( $entry, $field, $attrs ) = @_ ; > my $entry = $_[0]; > my $field = $_[1]; > my $attrs = $_[2]; > if(! defined $field ){ > return; > } > if( $field ne "" ){ > print( "$entry->get_value( 'preferredName' ) $field\n" ) ; Don't put the evaluation statement inside quotes: printf $entry->get_value( 'preferredName' )."$field\n"; should do. > } > > And all I see with that print-statment is: > Net::LDAP::Entry=HASH(0x8a29160)->get_value( 'preferredName' ) The problem were the double quotes. There are some restrictions regarding expression evaluation inside quotes. If this is fixed it hould work. > I did experiment with references, but that only gives me errors > that say the reference isn't blessed. If I bless it I get an error > saying that it's not a reference. No need to work with references of objects. A Perl object is simply a bledded reference. Peter -- Peter Marschall [EMAIL PROTECTED]