Thread Array of hashs
(20 answers)
Opened by roli at 2005-03-02 23:06
[quote=roli,05.03.2005, 12:40]Aber warum's (nur) mit "$jobconf[$job_no]={%current_job};" geht, also einem Shallow Copy, und nicht mit einer gewoehnlichen Zuweisung "$jobconf[$job_no]=%current_job;" verstehe ich halt noch nicht.[/quote]
$jobconf[$job_no] ist ein Eintrag in einem Array und kann damit nur ein Skalar oder eine Referenz sein. %current_job ist dagegen ein Hash. Wenn ein Hash in skalarem Kontext aufgerufen wird (wie in dieser Zuweisung), liefert er die Anzahl der belegten und der reservierten Buckets als String "n/m" zurueck - das, was du gesehen hast. In $jobconf[$job_no]={%current_job} erzeugen die geschwungenen Klammern eine Referenz auf einen anonymen Hash, der als Inhalt alle Elemente aus %current_job enthaelt. Diese Referenz kann wiederum problemlos in $jobconf[$job_no] gespeichert werden. Analog kann man mit eckigen Klammern eine Referenz auf ein anonymes Array anlegen. Vergleiche @array = (1, 2, 3, 4, 5) mit $array_ref = [ 1, 2, 3, 4, 5 ] oder $array_ref = [ @array ] |