Thread Array of hashs (20 answers)
Opened by roli at 2005-03-02 23:06

Dubu
 2005-03-10 21:39
#52267 #52267
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[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 ]

View full thread Array of hashs