perl
  • activerecord
  • ldap
  • 2011-02-03 2 views 0 likes 
    0

    このコードそれがない理由を私は理解していないget_valueを使用してobjectNameを取得する方法は?

    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をダンプした場合、私は私がget_value()を使用してobjectNameを取得するにはどうすればよい

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

    を参照してください?

    更新:最初のコメントが問題を解決しました。

    +2

    "$ entry - > {'asn'} - > {'objectName'}; – Ibrahim

    +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

    決して強い言葉ではありません。パブリックインターフェイスの作成者は、ユーザーがコードをどのように使用するかを常に予測するとは限りません。また、オブジェクトの内部を突き刺すことは、しばしば啓発され、楽しいことです。 – mob

    +2

    @モブ:OK、私は "あなたが故意に壊れやすいコードを書いていない限り、オブジェクトの内部の内部を突き抜けてはいけません"という私のコメントを修正します。 – Sean

    0

    FYI objectNameここにオブジェクトのDNがあります。これを取得/設定するには$entry->dn

     関連する問題

    • 関連する問題はありません^_^