_  _   ,_
/^\/^\-/ @D
~(________/ PERL.LT
|L |L
L L
Straipsniai  Funkcijos 
Straipsniai/Perlo objektai
Perlo objektai įdomūs ta prasme, kad jie iš tiesų nėra objektai. Tai dažniausiai būna asociatyvūs
masyvai, kurie netyčia žino kokiai klasei jie priklauso. Toks genialus paprastumas. Objekto
konstruktoriuje pagrindinį vaidmenį vaidina funkcija bless (Taip, palaiminti. Larry Wall labai
religingas žmogus, o pasižiūrėjus į perlmonks irgi surasit krūvas Kristaus pasekėjų). Štai
paprasčiausias konstruktorius, kuris grąžina tuščią objektą:

sub naujas { bless {}, $_[0] }

Perlo objekinėje sistemoje nėra tokių dalykų kaip privatūs ar vieši kintamieji (na kaip... iš
tikrųjų viskas įmanoma. Žaidžiant su my ir referencais galima daryt stebuklus, o kodas vis
tiek bus 10 kart trumpesnis už Java ;) Objektinio perlo principas yra toks: „programavimo kalba
neturi nurodinėti programuotojui ar jis nori pasiekti privačius kintamuosius ar ne. Perlas tikisi
kad programuotojas neis į objekto vidų todėl kad jis gerbia tą objektą, o ne todėl kad jei jis
ten užsuks tai jį nušaus“. Su statiniais metodais ir kintamaisiais viskas Perle paprasta.
Štai pilnas objektinio programavimo pavyzdukas Perlu, kuriame objektas yra Programeris, jame yra
statinis metodas kiek, statinis kintamasis $kiekis, konstruktorius ir vienas paprastas metodas.

package Programeris;

sub naujas {
        $Programeris::kiekis++;
        bless $_[1], $_[0];
}
sub kiek   { $Programeris::kiekis    }
sub vardas { $_[0]->{vardas} }

package main;
my $moxlius = naujas Programeris({vardas => 'Petras', 'pravarde' => 'moxliukas'});
print "Sukurta objektu: " . Programeris::kiek . "\n";
my $pukis = naujas Programeris({vardas => 'Juozas', 'pravarde' => 'pukomuko'});
print "Sukurta objektu: " . Programeris::kiek . "\n";
print "Pukomuko vardas: " . $pukis->vardas;

Visa tai atspausdina:

Sukurta objektu: 1
Sukurta objektu: 2
Pukomuko vardas: Juozas

Vienintelis skirtumas tarp statinių ir paprastų dalykų yra tas, jog statiniams metodams ir
kintamiesiems naudojamas ::, o paprastiems ->. 
algirdas@perl.lt 2005.04.11 - $dabar