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]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.