Reference dengan Struktur Data yang Lebih Rumit Lagi

use strict;

my @strikers = qw(barkoui zaenal brahima doni);
my @strikers_persib = ("strikers", \@strikers);
my @defenders = qw(antonio charis usep edi);
my @defenders_persib = ("defenders", \@defenders);
my @midfielders = qw(eka salim erik yaris);
my @midfielders_persib = ("midfielders", \@midfielders);

my @tim_persib =(\@strikers_persib,\@defenders_persib,
\@midfielders_persib);
Sampai saat ini array @tim_persib mempunyai 3 elemen, yang semuanya adalah reference ke suatu array dan tiap-tiap elemen (reference) tersebut mempunyai 2 elemen yang terdiri atas string dan reference.
 @tim_persib = Array reference $persib[0]:string (posisi)
Array reference
Array Reference $persib[1]:string
Array reference
Array Reference $persib[2]:string
Array Reference
Dan jika kita menuliskan "print $tim_persib[0], "\n"; " maka kita akan mendapatkan "ARRAY(0x816ae4c)", karena $tim_persib[0] adalah sebuah array reference, maka kita harus men dereferencenya terlebih dahulu, dengan @{$tim_persib[0]}.
 print @{$tim_persib[0]}, "\n";
Yang akan mencetak 2 elemen anggota dari Array Reference \@strikers_persib, yaitu string "strikers" dan Array Reference \@strikers (alamat memori). Jika kita hanya ingin mencetak string "strikers" saja, maka cukup dengan @{$tim_persib[0]}[0] Atau ${$tim_persib[0]}[0]; Dan untuk mencetak seluruh striker $tim_persib adalah
 Print @{$tim_persib[0][1]}

Menyederhanakan Notasi

Jika notasinya terlalu susah dibaca/rumit/kepanjangan maka kita bisa pakai tanda panah dan sebelumnya si array @tim_persib dijadikan array reference, maksudnya
 my $maung_bandung = \@tim_persib;
print $maung_bandung->[0][1][1], "\n"; #atau
print @{$maung_bandung->[0][1]}, "\n" ; #semua striker akan dicetak

Rereference dan dereference variabel Hash

 use strict;

my %pemain = (
nama => 'edi kurnia',
nomor => '1',
posisi => 'keeper',
tinggi => '186',
);

my $ref_hash = \%pemain; #membuat hash reference

print %{$ref_hash}->{'keys'},"\n"; #dereference atau dengan

foreach(keys %$ref_hash) {
print $_, " : ", %{$ref_hash}->{$_}, "\n";
}

.."..Blogging : Programing.."..

Komentar

Anonim mengatakan…
aduh sayang aku gak ngerti ini maksudnya apa?????
Moh. Johan Rajabi mengatakan…
Ini... waktu aku belajar reference say..., Reeference itu kalo di bahasa C semcam poiter. jadi menunjuk alamat memory...
Anonim mengatakan…
Iki bahas opo to?
Moh. Johan Rajabi mengatakan…
weleh kang udin ini merendahkan diri banget..., iki kang pengannya kang udin dari dulu. mungkin bedanya ini cuma reference di PERL. kalo di PHP apa ya... kang...