Thread happy birthday mailer (18 answers)
Opened by mika at 2011-02-02 22:49

Dubu
 2011-02-03 22:32
#145310 #145310
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
2011-02-03T17:37:28 mika
Falsch ist es nicht, nur funktioniert es in meinem Code so nicht... Warum kann ich nicht sagen. Es geht um die Funktion sendmail.

Du würfelst drei verschiedene Variablen durcheinander.
%config ist ein Hash, in dem die meisten deiner Einstellungen sind. Der wird in Zeile 44 deines Codes gefüllt.
$config ist eine Referenz auf einen anonymen Hash, in dem nur eine Einstellung drin ist, und zwar "db". Der wird in Zeile 46 angelegt und gefüllt.
@config ist ein Array, dass du jetzt neu in deiner sub angelegt hast.

Zeile 46 ist eigentlich schon falshc. Das funktioniert nur auf Grund von Autovivifikation der Variablen $config bei der Zuweisung. Eigentlich möchtest du an dieser Stelle wahrscheinlich
Code (perl): (dl )
$config{db} = load_db(\%config);
schreiben, um das entsprechende Feld im hash %config zu füllen. Anschließend musst du dann natürlich mit $config{db} darauf zugreifen und nicht mit $config->{db}.

Vielleicht lohnt ein Blick in perlreftut, perldata und (fortgeschrittener) perldsc.

Quote
Ich erhalte so keinen Fehler, aber es wird auch nicht in die for-Schleife gesprungen. Wenn ich es so mache wie hier (Mit my @config=shift; tuts das.)

Klar, weil du da eine neue Variable @config anlegst, die nirgends genutzt wird. Im folgenden wird in der sub auf die globalen Variablen $config und %config zugegriffen! In topegs Code wird lokal eine neue Referenz $config angelegt. Die verweist aber beim Aufruf auf die Variable %config im Hauptprogramm, und enthält daher nirgendwo einen Key "db", deshalb gibt's mit seinem Code und deinem $config->{db} eine Fehlermeldung.

Jetzt alles klar oder endgültig konfus? ;-)

PS: Und bitte nicht "commemorative". Das hat meinem Sprachgefühl her was mit Gedenken, Feierlichkeiten, Zeremonien und so zu tun. "Reminder e-mail" passt hier besser.
Last edited: 2011-02-03 22:36:53 +0100 (CET)

View full thread happy birthday mailer