Perl References ( Itu tuh... kayak pointer di C )

Reference adalah salah satu jenis variabel, dan sebenarnya (sesungguhnya) adalah jenis variabel scalar yang mungkin untuk 'memperlakukannya' tidak seperti apa yang biasa kita lakukan pada "variabel scalar yang biasa". Bisa dikatakan bahwa reference adalah suatu variabel scalar yang sebenarnya tidak menyimpan nilai apapun kecuali alamat memori dimana nilai tersebut disimpan (penunjuk/pointer), contoh :

$persib = 'maung';
$a = \$persib; #untuk menciptakan reference gunakan tanda backslash.
maka menurut saya (katakan jika salah) $a tidak bernilai 'maung' tetapi alamat memori dimana 'maung' disimpan.

Kegunaan reference

Kegunaan reference yang paling bisa dimengerti adalah ketika kita ingin mengirim dua atau lebih array ke subrutin, lalu Perl menciptakan variabel khusus "@_" untuk menerima/menyimpan array-array tersebut, lalu di dalam subrutin tersebut KITA PERLU TAHU yang mana elemen dari array satu dan yang mana elemen dari array yang lainnya maka kita perlu reference, contoh :

rutin_1(@array1,@array2);

Tanpa reference, maka di dalam subrutin rutin_1(), si variabel khusus @_ tidak akan bisa membedakan yang mana elemen yang berasal dari @array1 dan yang mana elemen yang berasal dari @array2. Lebih jelas lagi mungkin harus dengan contoh (useless) :

#!/usr/bin/perl -w
use strict;

my @array1 =(3,4,5);
my @array2 =(0,1,2);

rutin_1(@array1,@array2);
sub rutin_1 {
my (@array3,@array4) = @_;
foreach (@array3) {
print $_, "\n"; #hasilnya 3,4,5,0,1,2
}
#atau dengan ini pun akan percuma
#my ($array3,$array4) = @_;
}
Dengan reference, kita bisa membuatnya menjadi
#!/usr/bin/perl -w
use strict;

my @array1 =(3,4,5);
my @array2 =(0,1,2);

rutin_1(\@array1,\@array2);
sub rutin_1 {
my ($array3,$array4) = @_;
$,=' ';
print @$array3, "\n";
}

Mungkin suatu saat dalam 'real program' yang akan kita buat, kita butuh 'untuk mengetahui' yang mana saja anggota dari array satu dan yang mana saja elemen-elemen dari array dua.

Kegunaan yang lainnya adalah masalah efisiensi / kecepatan, maksudnya jika mengirimkan suatu array yang hanya mempunyai beberapa elemen ke dalam suatu subrutin tentu saja itu tidak akan menjadi masalah, tetapi jika kita berhadapan dengan suatu array yang mempunyai anggota yang sangat 'buannnyaaak' lalu Perl mengcopy seluruh anggota array tersebut ke variabel khusus @_, sepertinya hal seperti itu dirasakan kurang efektif.

Kegunaan lain dari reference adalah untuk struktur data yang sangat rumit dan terus terang saya belum bisa ngasih komentar mengenai hal ini (atau mungkin yang dimaksud dengan struktur data yang rumit adalah apa yang yang akan saya rangkum selanjutnya di bawah ini).

untuk membuat suatu variabel reference yang kita butuhkan adalah hanya dengan menempatkan tanda \ (backslash) di depan variabel yang akan kita reference, misal

$a = \$nilai; #scalar reference
$a = \@nilai; #array reference
$a = \%nilai; #hash reference
$a = \&subsub(); #subrutin reference

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

Komentar