Re: perl - mir unverstaendliche Variablenstruktur

Christian Boltz <suse-/[email protected]>
Newsgroups gmane.linux.suse.programming
Message-ID <[email protected]>
Hallo Ratti, hallo Leute,

Am Dienstag, 13. Dezember 2005 20:13 schrieb Ratti:
> 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
> ];
>
> LDAPentryCreate(    $ldap,
>              "cn=$cn,$people",
>              @data
> );
>
>
>
> Mein Problem:
> Es gibt einige Felder, die undefiniert seien können, z.B.:
> Telefonnummer nicht bekannt. LDAP erlaubt mir nicht, leere Felder
> dafür zu schreiben. Deswegen will ich obige Monstervariable leer
> initialisieren und nur die Attribute füllen, die tatsächlich
> definiert sind.
>
> Es gelingt mir aber leider nicht, diese Struktur so zu entwirren,
> dass ich in etwa sowas habe:
>
> @data=[];	# Leer machen
>
> if ($mail) {	$data[0]{'mail'} 	= $mail;	}
> if ($phone) {	$data[0]{'phone'} 	= $phone;	}
> if ($plz) {	$data[0]{'plz'}		= $plz;		}
> if ($handy) {	$data[0]{'handy'}	= $handy;	}
> if ($ort) {	$data[0]{'ort'} 	= $ort;		}
> if ($firma) {	$data[0]{'firma'}	= $firma;	}
>
> LDAPentryCreate(    $ldap,
>              "cn=$cn,$people",
>              @data
> );
>
> Diese Syntax "   $data[0]{'plz'} = $plz;   " ist falsch. Wie lautet
> die richtige?

Gute Frage - jedenfalls ist mir auf den ersten Blick unklar, woher Du 
das [0] hast. Probiers mal ohne ;-)

> Vor mir liegt ausgedruckt perlref, perldsc, perldata und perlvar
> randvoll mit den bescheuertsten ist-nicht-geil-was-alles-geht?-
> Beispielen , aber leide keine vernünftige Erklärung...

;-)

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

Du solltest öfter mal in fontlinge-devel reingucken *hint*. Ich zitiere 
beispielsweise eine Mail von David Haller vom 7.4.2005 ("Re: Indizies 
checken")

| perldoc Data::Dumper hilft bei komplexen Datenstrukturen ungemein,
| z.B. 'print Dumper(\%mein_hash)'.
|
| Achtung: Dumper erwartet eine Referenz auf die auszugebende Variable,
| ansonsten nimmt es ein Hash z.B. als Liste auszugebender Variablen an.
|
| Also, wenn du ein Hash hast: 'print Dumper(\%hash)' und wenn man schon
| eine Referenz hat: 'print Dumper($hashref)'.

Weiter unten im Thread (19.4.2005) hat David dann auch ein 
Anwendungsbeispiel von Data::Dumper gezeigt.

perldoc Data::Dumper'   ist natürlich auch lesenswert ;-)


Ach ja:   use strict; use warnings;   hast Du ja vermutlich schon, oder?


Gruß

Christian Boltz
-- 
> Bitkollisionen finden v.a. in Kneipen und Festzelten statt,
> würde ich mal annehmen.                            [H. Bengen]
Und zu viele davon führen zu einem stomach overflow? [L. Barth]

-- 
Um die Liste abzubestellen, schicken Sie eine Mail an:
    suse-programming-unsubscribe-IBi9RG/[email protected]
Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken
Sie eine Mail an: suse-programming-help-IBi9RG/[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.