此代码
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()
?
更新:第一条评论解决了问题。
答案 0 :(得分:4)
方法调用不会插入到双引号字符串中。在这种情况下,您似乎根本不需要引号:
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;
请注意,易卜拉欣的评论是个坏主意。你永远不应该在对象的内部进行探索;改为使用公共界面。
答案 1 :(得分:0)
FYI objectName
这里是对象的DN。要获取/设置它,您应该使用$entry->dn