Az egyszerű esetek, amikor egy egyszerű struktúrát szeretnénk használni:
$ketto = $$scalarref; print ,,A program neve:'',$$arrayref[0],,,\n''; print ,,HOME='',$$hashref{'HOME'}; &$coderef(1,2,3);
Persze lehet mutatni mutatóra is:
$refrefref = \\\,,valami''; print $$$$refrefref;
Bármilyen hely, ahol egy referenciát kapnánk meg, helyettesíthető egy blokkal, amely értéke a referencia lesz:
$ketto = ${$scalarref}; print ,,A program neve:'',${$arrayref}[0],,,\n''; print ,,HOME='',${$hashref}{'HOME'}; &\{$coderef}(1,2,3);
No persze a blokk lehet bonyolultabb is:
&{$inditas{$index} }(1,2,3); # megfelelő eljárás indul $$hashref{,,KEY''} = ,,VALUE''; # 1. eset ${$hashref}{,,KEY''} = ,,VALUE''; # 2. eset ${$hashref{,,KEY''}} = ,,VALUE''; # 3. eset ${$hashref->{,,KEY''}} = ,,VALUE''; # 4. eset
Itt az 1. és 2., illetve a 3. és 4. eset egyenértékű. A fenti esetek egyszerűsítésére szolgál a -> operátor:
print ,,A program neve:'',$arrayref->[0],,,\n''; print ,,HOME='',$hashref->{'HOME'};
Ennek balértéke bármilyen kifejezés lehet, amely egy referenciát ad vissza. Ez az operátor el is hagyható {} vagy [] zárójelek között (de tényleg csak közöttük!):
$array[$x]->{,,valami''}->[0] = ,,január''; $array[$x]{,,valami''}[0] = ,,január'';
Ezzel el is jutottunk a többdimenziós C-beli tömbökhöz:
$tomb[42][4][2] += 42;