Šį kartą sužinosite kaip su Perl kuriami dideli projektai. Dideli tai kai eina kalba apie šimtus Perl kodo eilučių. Bet koks žaidimas tai ir yra didelis projektas. Beabėjo jūs galite imti ir rašyti viską ir nuo viršaus į apačią, bet tai yra nepraktiška. Paprastai yra pirma aprašomos funcijos kurias vėliau naudosite ir pagrindinę kodo dalį sudaro tų funkcijų iškvietimas. Taip supaprastėja kodo priežiūra ir kūrimas. Jei jūs turite funkciją savo kuri skaičiuoja žaidėjo taškus tai jums nesunku atlikti pakeitimos tik joje nesiknaisant po visą kodą. Galų gale jei dar tiksliai nežinote kaip bus skaičiuojami taškai galite palikti tuščią funkciją ir ją sukurti veliau, o pradines BETA žaidimo versijas palikti be jokių taškų.

O tai daroma taip:

Tokio tipo paprasčiausios funkcijos naudojamos retai. Dažniausiai funcija dirba su kažkokiais jau duodamais duomenimis. Tie duomenys sukeliami į @_ masyvą kuris yra savo paskirtimi toks pat kaip $_ kintamasis. Taip be jo čia jau neiišsisuksim. Panagrinėkim tokią funkciją:

my čia jums naujiena. my sako jog $a ir $b yra privatūs kintamieji. Tai reiškia, kad už šitos funcijos ribų gali egzistuoti kiti $a ir $b ir reikšti kitką. „my“ niekad nebūtinas, bet be „my“ net itin gabūs programuotojai Perl gali labai suklysti ir panaudoti tą patį kintamąjį netyčia du kartus skirtingiems dalykams. Taip gaunamas bugas kurį kartais labai sunku ištaisyti. Na visa kita čia turėtų būti jau aišku. Va taip mes naudosime tokią funciją:

$x, $y iššaukus funkciją tampa @_ paskui perkeliami į $a, $b ir įvygdžius likusį funcijos kodą gražinamas tik tas kuris mažesnis. Funkcija grąžino tai su kuo dirbo, tačiau jei rašote dideles funcijas gali tapti neaišku kas bus grąžinta arba įvykti tai ko net nesitikėjote. Todėl konkrečiau yra rašant funkciją apibrėžti tiksliai kas bus grąžinta kaip rezultatas su:

arba:

ar pan.

Dar vienas pavyzdys. Čia funkcija dirba su masyvu ir naudojamas return:

Perl moduliai
Daug funkcijų yra labai naudingos įvairiais atvėjais. Perl turi didžiulę funkcijų kolekciją savo moduliuose. Moduliai dažnai yra tokios pat tekstinės bylos su Perl kodu iškyrus tai, kad jų sandarai ir veikimui galioja tam tikros griežtos taisyklės ir dar tai, kad jų galūnė yra .pm, o ne .pl. Be to Perl modulius galime rašyti ir kitomis programavimo kalbomis tarkim su C.

Jei norite naudoti modulį pirmiausia turite jį iškviesti taip:

Paskui tiesiog atsiranda daugiau funkcijų. Yra daug labai galingų modulių kaip kad LWP. Štai interneto puslapio atsisiuntimo! pvz.:

Perl moduliai yra sukaupti http://www.cpan.org/. Gali taip atsitikti, kad jūs neturite vieno ar kito gero modulio ir tuomet jį teks instaliuoti su terminalo komanda:

Arba jei turite Linux tai jie gali būti instaliuoti kaip paketai. Egzistuoja ir rankinis instaliavimas išarchyvuojant.

Būtent per modulius galima dirbti su garsu ir vaizdu. Bet kai kurie moduliai naudoja objektinį Perl todėl dar reiks su juo susipažinti prieš kimbant į SDL, Win32::Sound ir kitus žaidimų kūrimui beveik būtinus modulius.

Uždavinys.
Naudoti Math::Trig modulį ir jo funkciją tan (skaičiuoja tangentus) ir parašyti, programą kuri sudarytų nuo 1 iki 100 tangentų lentelę.
Antra dalis. Žinant, kad tan($x) = sin($x)/cos($x) nenaudoti jokių modulių, pačiam aprašyti funkciją tan ir ją panaudoti.