Anzeige:
Ergebnis 1 bis 3 von 3

Thema: array? liste? hash? elemente hinzufügen

  1. #1
    Registrierter Benutzer
    Registriert seit
    28.07.2001
    Ort
    Wien
    Beiträge
    90

    array? liste? hash? elemente hinzufügen

    Ich steh mal wieder an....

    wenn ich einer Funktion als Parameter eine Liste von Elementen der Form { =>, =>, => ) übergebe. wie kann ich das in einer erweiterbaren Variable machen?

    Konkret bei Net::LDAP die Funktion add:

    Code:
    $ldap->add(
       'dn' => 'uid=myself,dc=domain',
       'attr' => [
          'cn' => 'myself',
          'sn' => 'ichbinich'
       ]
       );
    Was ich machen will, ist statt dem 'attr' => [] eine Variable übergeben, was ja wohl mit 'attr' => $attr gehen müsste, oder @attr?

    nur wie füll ich attr mit werten? das initialisieren is ja nicht das Problem, aber was ist wenn ich da noch Werte dazuschreiben will, wie geht das? sagen wir das oben genannte beispiel mit " 'mail' => 'myself@ichbinich' " erweitern?
    Diese Message wurde erstellt mit freundlicher Unterstützung eines frei-
    laufenden Pinguins aus artgerechter Freilandhaltung. Er ist garantiert
    frei von Micro$oft'schen Viren.

  2. #2
    Registrierter Benutzer
    Registriert seit
    30.12.2001
    Beiträge
    444
    Was Du variabel gestalten möchte weiss ich nicht, ich nehme mal an Du möchtest die Unterschiedliche Attributwerte vergeben(Ich habe mit LDAP noch nicht gearbeitet).
    Code:
    $ldap->add(
       'dn' => 'uid=myself,dc=domain',
       'attr' => [
          'cn' => "$commonname",
          'sn' => "$surname"
       ]
       );
    Was mich aber wundert ist, das Du als erstes den dn als einfachen Hash übergibst nicht wie attr als Hash aus Hashes(Kann natürlich sein das das die richtige Syntax ist). Ich könnte mir das so vorstellen:

    Code:
    $ldap->add(
       'dn' => [
          "uid" => "$uid",
          "dc"  => "$domain"
          ],
       'attr' => [
          'cn' => "$commonname",
          'sn' => "$surname"
       ]
       );
    Du kannst natürlich auch alle Attribute in einen Hash auslagern:
    Code:
    my %hash;
    $hash{"sn"}="$surname";
    $ldap->add(
       'dn' => "...."
       'attr' => \%hash
       ]
    );
    Geändert von fork (06-09-2002 um 13:06 Uhr)

  3. #3
    Registrierter Benutzer
    Registriert seit
    28.07.2001
    Ort
    Wien
    Beiträge
    90
    danke. das der dn so angegeben ist hat den grund, das das kein hash sondern eine echte zeichenkette ist, die der ID des Users entspricht (cn=<irgendwas>,<domain>)

    ich hab das jetzt etwas anders gelöst:
    Code:
    my $entry = Net::LDAP::Entry->new;
    $entry->dn( "uid=myself,dc=domain" );
    $entry->add( cn => $commonname );
    $entry->add( sn => $surname );
    
    $ldap->add( $entry );
    das hat den vorteil, das ich mittels $entry->add dynamisch attribute hinzufühen kann (z.B. Telefonnummer falls vorhanden)
    Diese Message wurde erstellt mit freundlicher Unterstützung eines frei-
    laufenden Pinguins aus artgerechter Freilandhaltung. Er ist garantiert
    frei von Micro$oft'schen Viren.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •