这段代码
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()
更新:第一个注释解决了问题。
发布于 2011-02-03 17:44:30
方法调用不被内插到双引号字符串中。在这种情况下,似乎根本不需要引号:
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;请注意易卜拉欣的评论是个坏主意。您不应该在对象的内部进行搜索,而应该使用公共接口。
发布于 2013-06-13 20:36:45
FYI objectName这里是对象的DN。要获得/设置它,您应该使用$entry->dn
https://stackoverflow.com/questions/4888473
复制相似问题