Perl脚本LDAP搜索返回Hash,但$ mesg->条目不返回任何内容

时间:2013-05-01 16:32:35

标签: perl ldap

这是我在StackOverFlow上的第一个问题,所以如果我做错了,请告诉我。

这是我的剧本:

#!/usr/bin/perl
use Net::LDAP;
use warnings;
use strict;
my($user,$ldap,$mesg,$info,$entry,$x,$y);
$user = $ARGV[0];
$ldap = Net::LDAP->new ("dirproxy.paychex.com") or die "$@";
$mesg = $ldap->search(filter=>"(uid=$user)", base=>"ou=people,o=paychex inc,c=us");
print $mesg; #hash of entry
$info = "$user,,";
$x=$y=' ';
foreach $entry ($mesg->entry)
{
    print "hello?";
    if(length $entry->get_value("payxlocation")) #if > 0
    {
        $x = $entry->get_value("payxlocation");
        $x =~ s/,//g;
    }

    if(length $entry->get_value("organization")) #if > 0
    {
        $y = $entry->get_value("organization");
        $y =~ s/,//g;
    }

    $info = "$user,$x,$y";
}
print $info;

打印$ info打印“user ,,”。问题似乎出现在我的foreach声明中

foreach $entry ($mesg->entry)

“$ mesg->条目”为空,因此它跳过foreach并打印用户,没有其他信息。

1 个答案:

答案 0 :(得分:0)

foreach $entry ($mesg->entry)

应该是:

foreach $entry ($mesg->entries)

有关Net::LDAP::Search的更多信息,您可以在其中查看entryentries

之间的区别