next up previous index
Következő: 9.1.1.16.2 Szimbólikus hivatkozások Fel: 9.1.1.16.1 Referencák létrehozása Előző: 9.1.1.16.1 Referencák létrehozása   Index

9.1.1.16.1.1 Referenciák használata
Nagyon egyszerű egy referanciát használni: a programban egy változó neve helyére bárhova beírhatunk egy megfelelő típusú referenciát tartalmazó vátozót.

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;




1999-09-17