Re: perl - mir unverstaendliche Variablenstruktur
Jens Daniel Schmidt <[email protected]>
| Newsgroups | gmane.linux.suse.programming |
|---|---|
| Message-ID | <[email protected]> |
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
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
[email protected]
Um eine Liste aller verfÃŒgbaren Kommandos zu bekommen, schicken
Sie eine Mail an: [email protected]