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]