Как использовать get_value для получения objectName? - PullRequest
0 голосов
/ 03 февраля 2011

Этот код

my @bl = ();
foreach my $entry ($m->entries) {
  push @bl, "$entry->get_value('objectName', asref => 0)";
}

print Dumper @bl;

выводит

$VAR1 = 'Net::LDAP::Entry=HASH(0x5c70920)->get_value(\'objectName\', asref => 0)';
$VAR1 = 'Net::LDAP::Entry=HASH(0x5c706c0)->get_value(\'objectName\', asref => 0)';
$VAR1 = 'Net::LDAP::Entry=HASH(0x5c70660)->get_value(\'objectName\', asref => 0)';

, что я не понимаю, почему это так.

Если я изменю objectName на sAMAccountName, это дает что-то осмысленное.

Если я дам дамп $m->entries Я вижу

$VAR1 = bless( {
                 'changes' => [],
                 'changetype' => 'modify',
                 'asn' => {
                            'objectName' => 'CN=sandra,OU=list,DC=example,DC=com',
                            'attributes' => []
                          }
               }, 'Net::LDAP::Entry' );

Как мне получить objectName используя get_value()?

Обновление : первый комментарий решил проблему.

Ответы [ 2 ]

4 голосов
/ 03 февраля 2011

Вызовы методов не интерполируются в строки в двойных кавычках. В этом случае, похоже, что вам вообще не нужны кавычки:

my @bl = ();
foreach my $entry ($m->entries) {
  push @bl, $entry->get_value('objectName', asref => 0);
}

Или, еще лучше:

my @bl = map { $_->get_value('objectName', asref => 0) } $m->entries;

Обратите внимание, что комментарий Ибрагима - плохая идея. Вы никогда не должны ковыряться внутри объекта; используйте вместо этого открытый интерфейс.

0 голосов
/ 14 июня 2013

FYI objectName здесь DN объекта. Чтобы получить / установить его, вы должны использовать $entry->dn

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...