PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : array? liste? hash? elemente hinzufügen



ComSubVie
04-09-2002, 13:18
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:



$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?

fork
06-09-2002, 13:03
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).


$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:



$ldap->add(
'dn' => [
"uid" => "$uid",
"dc" => "$domain"
],
'attr' => [
'cn' => "$commonname",
'sn' => "$surname"
]
);


Du kannst natürlich auch alle Attribute in einen Hash auslagern:


my %hash;
$hash{"sn"}="$surname";
$ldap->add(
'dn' => "...."
'attr' => \%hash
]
);

ComSubVie
06-09-2002, 13:21
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:


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)