[Date Prev][Date Next] [Chronological] [Thread] [Top]

Virtual list view problem



Hi all

I am using cpan Net::LDAP module to access LDAP entries. I want to search LDAP entries using Net::LDAP search method. When I do search, I want some limited number of entries from search result, for this(searching) process I am using Net::LDAP::Control::VLV module. But I get error on VLV response control. Please, any one have idea about this error.
*
Error:* Died at vlv.pl line 50,

This is my example. I changed the font style of line 50

#!/usr/bin/perl -w

use Net::LDAP;
use Net::LDAP::Control::VLV;
use Net::LDAP::Constant qw( LDAP_CONTROL_VLVRESPONSE );
use Net::LDAP::Control::Sort;

sub procentry {
  my ( $mesg, $entry) = @_;
  # Return if there is no entry to process
  if ( !defined($entry) ) {
      return;
  }
  print "dn: " . $entry->dn() . "\n";
      @attrs = $entry->attributes();
      foreach $attr (@attrs) {
              #printf("\t%s: %s\n", $attr, $entry->get_value($attr));
              $attrvalue = $entry->get_value($attr,asref=>1);
              #print $attr.":". $entry->get_value($attr)."\n";
              foreach $value(@$attrvalue) {
                  print "$attr: $value\n";
              }
       }
  $mesg->pop_entry;
  print "\n";
}

$ldap = Net::LDAP->new( "localhost" );

# Get the first 20 entries
$vlv  = Net::LDAP::Control::VLV->new(
        before  => 0,        # No entries from before target entry
        after   => 19,       # 19 entries after target entry
        content => 0,        # List size unknown
        offset  => 1,        # Target entry is the first
      );
my $sort = Net::LDAP::Control::Sort->new( order => 'cn' );


@args = ( base     => "dc=example,dc=co,dc=in",
        scope    => "subtree",
        filter   => "(objectClass=inetOrgPerson)",
        callback => \&procentry, # Call this sub for each entry
        control  => [ $sort, $vlv ],
);

$mesg = $ldap->search( @args );

# Get VLV response control
*($resp)  = $mesg->control( LDAP_CONTROL_VLVRESPONSE ) or die;*
$vlv->response( $resp );

# Set the control to get the last 20 entries
$vlv->end;

$mesg = $ldap->search( @args );

# Get VLV response control
($resp)  = $mesg->control( LDAP_CONTROL_VLVRESPONSE ) or die;
$vlv->response( $resp );

# Now get the previous page
$vlv->scroll_page( -1 );

$mesg = $ldap->search( @args );

# Get VLV response control
($resp)  = $mes
# Now page with first entry starting with "B" in the middle
$vlv->before(9);       # Change page to show 9 before
$vlv->after(10);       # Change page to show 10 after
$vlv->assert("B");     # assert "B"

$mesg = $ldap->search( @args );g->control( LDAP_CONTROL_VLVRESPONSE ) or die;
$vlv->response( $resp );

--
Venish Khant
www.deeproot.co.in