In article <[EMAIL PROTECTED]>, [EMAIL PROTECTED] (Tim Musson) writes: >Hey all, > > I am using the perl-ldap module (to access MS AD, not that that > matters to this question though :-). > > My problem is I don't understand part of the example code - it all > works just fine, but using the "as_struct" method, I need to just > display the "cn" attribute (I need to write the attributes in a > specific order, so have to be able to write just one of the returned > list - I can change what is returned with no problem). > > The code I am looking at is here > < > http://search.cpan.org/~gbarr/perl-ldap/lib/Net/LDAP/Examples.pod#PROCESSING_Displaying_SEARCH_Results > > > and the specific part is > >foreach $attrName (@arrayOfAttrs) { > > # skip any binary data: yuck! > next if ( $attrName =~ /;binary$/ ); > > # get the attribute value (pointer) using the > # attribute name as the hash > my $attrVal = @$valref{$attrName} ; > print "\t $attrName: @$attrVal \n"; >} > > I was thinking (and the documents say) these are references, but I > have had a hard time getting my head around references... > > I have tried adding this > print @$valref{cn}; > but all it prints is > ARRAY(0x25d9ec4)
That's because you missed out the next line, where the value from (the equivalent of) @$valref{cn} is dereferenced again with @$attrVal. I don't know why the dereferencing is done in the example with @$valref{$attrName}; that's needlessly complicated (single element slice of hash via reference?!). It'd make more sense to use -> : print $valref->{cn}->[0]; (Assuming you have only one cn, as most people do.) In fact, you can get it right from the search result. $result->as_struct returns a reference to a hash keyed by DN, with values being references to hashes keyed by attribute name, whose values are references to arrays of attribute values. So: my $href = $result->as_struct; for my $dn (keys %$href) { print "cn of $dn is $href->{$dn}{cn}[0]\n"; } (That's taking advantage of the fact that you can leave out -> between closing and opening {} or [].) -- Peter Scott http://www.perldebugged.com -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]