Модераторы: ginnie, korob2001
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача handlera на соединение в пакет, не отправляется запрос по этому handler 
V
    Опции темы
Zubilo
Дата 13.12.2007, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 13.11.2007
Где: Химки

Репутация: нет
Всего: нет



Добрый день!
    Если создавать LDAP соединение и по нему отправлять запросы, то все работает, если это все написано одной программой(одним Perl файлом):
Код

#!/usr/bin/perl -w
use strict;
use Net::LDAP;
use Net::LDAP::Control;

my ($debug, $sth, $entry, $dept, $query, $rosteritem, $rostergroup,
    @roster, $inneritem, $res, $jabber_domain);

my $basedn     = "DC=company,DC=msk";
my $ldapserver = "server.company.msk";
my $disname    = "CN=admin,CN=users,DC=company,DC=msk";
my $ldappass   = "1111";

# Connection to LDAP server for futher fethcing and modifying persons attributes
my $ldap = Net::LDAP->new( $ldapserver, debug => 0 ) || die "$!";
my $mesg = $ldap->bind ($disname, password => $ldappass, version => 3 ) || die;
my $search = $ldap->search(
             base   => "$basedn",
             scope  => "one",
             filter => "(&(objectClass=organizationalUnit))" );
# fetch the department names
foreach $entry ($search->entries) {
    $dept = $entry->get_value('name');
    print "$dept\n";
}
$ldap->unbind;


если ничего не удалил лишнего, то вобщем так это работает.

А если передавать  $ldap в процедуру пакета,а там его соответственно получать с помощью shift, то на запросы к серваку по этому handler он отвечает так: Use of uninitialized value in string at ...
Все вроде понятно, что у них, если я правильно понимаю, различные адресные пространства для хранения переменных(различные пространства имен переменных), и что в пакете этот handler указывает на не свой участок памяти. Существует ли возможность каким либо образом реализовать передачу handler'а в процедуру пакета?
PM MAIL   Вверх
Ramirez
Дата 13.12.2007, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 18.1.2005
Где: Moscow, ExUSSR

Репутация: нет
Всего: 5



А покажите код, как передаете, как принимаете. По идее все должно работать.
PM ICQ   Вверх
Zubilo
Дата 13.12.2007, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 13.11.2007
Где: Химки

Репутация: нет
Всего: нет



Это код, который вызывает процедуру из модуля:
Код


#!/usr/bin/perl -w
use strict;
use Net::LDAP;
use Net::LDAP::Control;
use Mail::Sender;
use DBI;
use test qw (test_sub sub_search);

my ($debug, $sth, $entry, $dept, $query, $rosteritem, $rostergroup,
    @roster, $inneritem, $res, $jabber_domain);

my $basedn     = "DC=xxx,DC=msk";
my $ldapserver = "xxxxx.xxx.msk";
my $disname    = "CN=xxx,CN=users,DC=xxxx,DC=msk";
my $ldappass   = "xxxxx";

# Connection to LDAP server for futher fethcing and modifying persons attributes
my $ldap = Net::LDAP->new( $ldapserver, debug => 0 ) || die "$!";
my $mesg = $ldap->bind ($disname, password => $ldappass, version => 3 ) ||
die;

die $mesg->error if $mesg->code;

my $h=sub_search($ldap);

$ldap->unbind;





А вот модуль:
Код

package test;
require Exporter;
@ISA = qw (Exporter);
@EXPORT_OK = qw (test_sub sub_search);

sub test_sub {
    my $p = shift;
    $p = $p*$p;
    return $p;
}
my $t=1;

sub sub_search{

my $ldap=shift;

my $dept;
my $entry;
print "pack ldap=$ldap\n";

my $search = $ldap->search(
             base   => "$basedn",
             scope  => "one",
             filter => "(&(objectClass=organizationalUnit))" );

# fetch the department names
foreach $entry ($search->entries) {

    $dept = $entry->get_value('name');
   # my $mm = $entry->get_value('mail');
   # my @mb= $entry->get_value('member');
    #print "ou=$dept, basedn= $basedn\n";

#    fetchperson("ou=$dept,$basedn", "one", "$dept"); 
        print "\t\t$dept\n";
}

        
        return $t;
}




1;



PM MAIL   Вверх
Zubilo
Дата 14.12.2007, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 13.11.2007
Где: Химки

Репутация: нет
Всего: нет



Люди! Помогите!!! Как сделать чтобы все заработало?
PM MAIL   Вверх
Ramirez
Дата 14.12.2007, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 18.1.2005
Где: Moscow, ExUSSR

Репутация: нет
Всего: 5



Ваш код у меня работает, без изменений.

perl, v5.8.8 built for i386-freebsd-64int
Net::LDAP v 0.34



PM ICQ   Вверх
Zubilo
Дата 18.12.2007, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 13.11.2007
Где: Химки

Репутация: нет
Всего: нет



И у меня заработал, странно. Заново все переписал и заработал.
Может где косячил. 
Всем спасибо, тема закрыта.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: Системное программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к системному программированию на Perl
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0897 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.