Hi Joerg, Joerg Rossdeutscher wrote:
Moin,
Ich habe ein Problem mit perl. Folgende Variable verstehe ich nicht:
@data=[ objectClass => [ "top", "person", "inetOrgPerson" ] , cn => $cn , sn => $nachname , homePhone => $telefon , mail => $email , givenName => $vorname , postalAddress => "$strasse , $plz , $ort" , postalCode => $plz , street => $strasse , o => $firma , l => $ort ];
Du weisst dass "=>" das gleiche ist wie "," ?? So machst du hier nur eine riesen Liste (angedeutet durch die eckigen Klammern). Die "=>" werden hier ausgewertet wie Kommas. Da ist also kein Hash drin, wie du es evtl. wolltest. Darum kannst du auch nicht mit $data[0]{mail} oder $data{mail} darauf zugreifen. auf die eMail-adresse kannst du nur zugreifen über data[9], da es das 10. Element ist. Was du vermutlich willst ist: $data = { objectClass => [ "top", "person", "inetOrgPerson"] , cn => $cn , ... usw. } Mit geschweiften Klammern ist das nämlich ein Hash. Anstatt auf deinem @$whatToCreate zu beharren solltest du dir evtl. einmal die Mühe machen, nachzusehen, welche Parameter "$ldap->add" wirklich erwartet.
P.P.S.: Gibt es für perl sowas wie "print_r" unter php, das einem jede noch so komplexe Variable formatiert auf dem Bildschirm aufdröselt?
Was sich dazu hervorragend eignet ist Data::Dumper. Aus dem CPAN installieren und dann zB. folgendermaßen benutzen: use Data::Dumper; @data = ...deine komische Struktur print STDERR "Here is my data\n" print STDERR Data::Dumper->Dump([@data], ["Data"]); oder print STDERR Data::Dumper->Dump([\@data], ["Data"]); Data::Dumper gibt dir beliebige Variablen sehr schön Formatiert aus. Damit erkennt man dann auch versehentlich falsch zusammengesetzte Hash- und Array-Konstrukte. Ciao, Daniel Schmidt