Thread Unverständliche Typenzuweisung: Skriptanalyse
(12 answers)
Opened by angelsfall at 2005-07-22 12:52 so funzt es. Versuch der Erklärung: $q->Vars gibt entweder eine HashReferenz oder einen Hash zurück; je nach Kontext. Eine Referenz kann man (grob) als Zeiger auf ein Stück im Arbeitsspeicher bezeichnen. zeigen nun alle auf die selbe Stelle, heißt: änderst du einen Wert z.B. Code: (dl
)
$x->{foo} = 'bar'; Code: (dl
)
my $w = $q->Vars Erstellt nun jeweils eine Kopie des Hashes, wodurch das Ändern von %x keine Auswirkungen mehr auf %y, %z haben kann. So weit, so gut; Was macht nun dieser Code? Nun, es wird erstmal eine Variable angelegt! Mit %$v (oder auch %{$v}) wird nun Perl erklärt, dass $v auf ein Stück Arbeitsspeicher zeigen soll, in dem ein Hash gespeichert werden soll; dieser Hash ist zu diesem Zeitpunkt noch leer. Durch die Zuweisung von %{$q->Vars}, wird dieses Stück Arbeitspeicher nun mit Daten gefüllt. Danach zeigt $v immer noch auf diesen Speicher, der jetzt aber gefüllt und losgelöst von den Daten aus $q->Vars ist. Verstanden? PS: Es sei erwähnt, dass das ganze nur so ähnlich abläuft, aber es kommt der Idee doch schon sehr nah! |