package DirServer; sub new { my $class = shift; my ($dir, $dir_manager, $pass) = @_; my $ldap = Net::LDAP->new($dir) or die "Couldn't connect: $@\n"; my $result = $ldap->bind($dir_manager, password=>$pass); $result->code && die "Couldn't bind".$result->error; bless \$ldap, $class; } sub modify_directory{ my $ldap = ${shift()}; my ($action_to_be_taken, $entry_to_be_adjusted, $attribute_to_be_adjusted, $value_to_adjust_with) = @_; my $result = $ldap -> modify($entry_to_be_adjusted, $action_to_be_taken => {$attribute_to_be_adjusted => $entry_to_be_adjusted}); $result->code && die "Ya screwed up".$result->error; } # Then... package main; my $dir_server = DirServer->new(@args); $dir_server->modify_directory(@more_args);