Da ist das Stichwort
Referenzen...
$tmp ist eine Referenz auf ein Hash. Bei der Zuweisung wird die Referenz dereferenziert (%$tmp).
Was
$tmp = opt . $j soll, kann ich ohne weiteren Code nicht sagen...
Und danach wird der Variablen
$test ein Wert zugewiesen, der sich aus
$irgend mal dem Wert, der in der Hashreferenz
$tmp zum Schlüssel "b" gespeichert ist, mal
$etwas.
$$tmp{'b'} ist eine Kurzschreibweise von ${ $tmp }{'b'} beziehungsweise von $tmp->{'b'}