PERL pratybų užduotys

 

1. Skaliarai, masyvai, asociatyiniai masyvai

1.1 Kintamiesiems priskirkite sveiką skaičių, realų skaičių, simbolių eilutę, simbolių eilutę su skaičiumi viduje, UNIX komandų vykdymo rezultatą.  Kintamųjų reikšmes išveskite į ekraną.

1.2 Atlikti sudėties ir konkatenacijos operacijas kintamųjų, kuriems interaktyviai buvo priskirti skaičiai ir simbolių eilutės atitinkamai. Rezultatus išvesti į ekraną.

1.3 Sukurti masyvą, susidedantį iš simbolių eilučių bei skaičių ir išvesti į ekraną masyvo elementus normalia bei atvirkštine tvarka.

1.4 Masyvo elementų reikšmės priskiriamos interaktyviai. Įterpti į masyvo vidurį keletą elementų, išmesti pirmą elementą. Išveskite į ekraną naują pirmą, paskutinį bei pasirinktą masyvo elementą.

1.5 Sukurti asociatyvinį masyvą, jį papildyti nauja reikšme. Reikšmes pagal turinčias kelis interaktyviai įvestus raktus sudėti į paprastą masyvą. Suskaičiuoti paprasto masyvo elementus.


 

2. Valdymo ir kontrolės struktūros

2.1 Masyvo elementų reikšmės įvedamos interaktyviai, kol sutinkamas skaičius 99. Išvesti į ekraną visas masyvo elementų reikšmes ir masyvo elementų skaičių.

2.2 Sumuoti atsitiktinius skaičius nuo 1 iki 100 , kol suma neviršys 599. Išvesti sumuotus skaičius bei jų skaičių. Atsitiktinio skaičiaus generavimui naudoti srand programos pradžioje bei funkciją rand(@array).

2.3 Modifikuoti asociatyvinį masyvą, sukeičiant raktus reikšmėmis, o reikšmes raktais.

2.4 Parašyti programą, kuri esant tam tikrai sąlygai (sugalvoti patiems) išeitų iš dvigubo ciklo ir programos su tokio įvykio pranešimu.

2.5 Asociatyviniame masyve ieškoti vienodų reikšmių. Jei tokios reikšmės rastos, jos modifikuojamos taip, kad taptų skirtingomis.

2.6 Įvykdytų pasirinktą veiksmą su visais asociatyvinio masyvo raktais.


 

3. Reguliariosios išraiškos ir šablonai

3.1 Įvykdyti pasirinktą veiksmą, jei kintamajame yra žodis, kuriame:
    a) bent viena raidė a;
    b) pirmoji raidė B, o kitų simbolių tarpe yra raidė r;
    c) yra trys iš eilės einančios kintamojo $var reikšmės;
    d) bet kokie penki simboliai, kurių tarpe yra \n;

3.2 Įvykdyti pasirinktą veiksmą, jei simbolių eilutėje yra du ar daugiau kartų pasikartojantys tokie pat žodžiai.

3.3 Programa nuskaito simbolių eilutę  iš failo ir išveda į ekraną žodžius, kuriuose yra visi 3 simboliai ( a, i, s).
Paleidimas:  rs1{dgtm}# myprog.pl < ./input_file

3.4 Išvesti UNIX sistemoje registruotus vartotojus t.y. jų prisijungimo vardą ir tikrą vardą. Naudoti /etc/passwd failą.

3.5 Išvesti UNIX sistemoje registruotus tik tuos vartotojus, kurių tikrieji vardai sutampa. Naudoti /etc/passwd failą.

3.6 Parašykite programą, kuri nustatytų kiek kartų kiekvienas simbolis kartojasi įvedimo faile.

3.7 Programa nuskaito iš standartinio įvedimo/isšvedimo įrenginio (STDIN) ir išveda į ekraną kiekvieną simbolį padvigubintą.


 

4. Failai ir bazinės įvedimo/išvedimo operacijos

4.1 Parašyti programą, kuri veiktų panašiai kaip UNIX komanda cat, tik išvestų eilutes atvirkštine tvarka t.y. pirmąją eilutę kaip paskutinę, o paskutinę, kaip pirmą.

4.2 Išveskite asociatyvinio masyvo raktus ir reikšmes, stulpeliuose, kurių plotis įvedamas interaktyviai.

4.3 Išvesti į ekraną pasirinkto failo teises bei savininką.

4.4 Nustatyti ar failas yra ryšys (link) ir į ką padarytas tas ryšys.

4.5 Išvesti atskirai visus katalogo failus, kurie turi rašymo, skaitymo, vykdymo teises.

4.6 Surasti kataloge seniausią failą ir jį ištrinti.

4.7 Komandinėje eilutėje nurodytuose failuose, kurių varduose nėra raidės a, tekstuose ištrinti kablelius.

4.8 Parašykite programą, kuri veiktų kaip UNIX komanda rm t.y. šalintų failus, nurodytus kaip programos argumentus komandinėje eilutėje.


 

5. Formatai

5.1 Išveskite failo /etc/passwd turinį naudodami skirtingus formatus.

5.2 Atlikite 5.1 užduotį pridėdami top-of-page formatą bei puslapių numeraciją.


 

6. Procesų valdymas

6.1 Parašykite programą, kuri tikrina (pvz. 5 sek. intervalu), ar sistemoje dirba vienas iš sąraše nurodytų vartotojų. Vartotojų sąrašas pateikiamas faile, kurio pavadinimas turi būti perduotas  programai per komandinės eilutės parametrą. Kai aptinkamas vartotojas, esantis sąraše, išvedamas atitinkamas pranešimas.

6.2 Parašyti programą, kuri komandos who išvedamoje informacijoje, prisijungimo vardus pakeistų realiais vartotojų vardais, paimtais iš /etc/passwd failo.

6.3 Išveskite visas grupes ir jų narių realius vardus naudodami formatus.

6.4 Parašyti programą, kuris sukurtų du procesus vaikus bei išvestų procesų vaikų PID. Taip pat programa turi iliustruoti tą faktą, kad programos kintamieji tėvo ir vaiko procesuose turi tas pačias pradines reikšmes, tačiau yra nepriklausomi vienas nuo kito.

6.5 Parašyti skriptą, kuris vykdytų dalybą iš 0 ir nesukeltų fatalinės klaidos.


 

7. Nuorodos

7.1 Sukurti nuorodas į kintamuosius:
    skaliarinį,
    masyvą,
    asociatyvaus masyvo,
    failo deskriptorių,
    vardinę ir anoniminę funkcijas
    masyvo ir asociatyvaus masyvo elementus.
Pakeisti šių kintamųjų reikšmes, naudojant nuorodas.

7.2 Į ekraną išvesti visas 2003 m. mėnesių dienas, kurios yra sekmadieniai. Išvedimas turi būti formatuotas su antrašte, o kiekvienoje eilutėje vieno menesio dienos.

7.3 Į ekraną išvesti 2003 m. pirmojo pusmečio kalendorių. Išvedimas turi būti formatuotas

7.4 Sukurkite duomenų struktūrą Paskalio trikampio saugojimui. Į ekraną formatuotai išveskite pirmas 15 trikampio eilutes.


 

8. Funkcijos ir paprogramės

8.1 Parašykite paprogramę, skirtą masyvo elementų rūšiavimui ir išvedimui didėjančia/mažėjančia tvarka.

8.2 Parašykite paprogramę, kuri savo parametro-masyvo elementus išveda atvirkštine tvarka.

8.3 Parašykite paprogramę, kuri savo sukeičia parametrų-dviejų masyvų elementus taip: pirmas el. pirmo masyvo keičiamas su paskutiniu elementu antrojo masyvo ir t.t.

8.4 Apjunkite tris viršutines paprogrames į modulį.


 

9. Klasės ir objektai

9.1 Parašykite programą su objektais, dirbančią kaip adresų knygutė.

9.2 Sukurkite klasę, kurios objektas būtų pasirinktos direktorijos subdirektorijų medis, leidžiantis išvesti bet kurios pasirinktos subdirektorijos turinį t.y. failus ir subsubdirektorijas.

9.3 Parašykite programą kuri veiktų, kaip UNIX shell'as t.y. galima būtų paleisti UNIX komandas, turėtų savo aplinkos kintamuosius ir t.t.


 

10. CGI skriptai

10.1 Sukurkite HTML formą su tekstiniais laukais, slaptažodžio laukais, checkbox'ais ir mygtukais "Submit" "Cancel" naudodami CGI.pm modulį taikydami struktūrinę ir objektinę sąsają.

10.2 Sukurkite HTML formą su tekstiniais laukais ir radiobox'ais mygtukais "Submit" "Cancel" naudodami CGI.pm modulį taikydami struktūrinę ir objektinę sąsają.

10.3 Jau sukurtai HTML formai (10.1 ar 10.2) parašykite programą, kuri nuskaitytų duomenis iš formos naudodama CGI.pm modulį.

10.4 Parašykite CGI skriptą, išvedantį visų CGI aplinkos kintamųjų reikšmes web naršyklėje. Jei kuriam nors kintamajam reikšmė nepriskirta, apie tai reikia ir pranešti.

10.5 Naudodami CGI.pm modulį patikrinkite ar  HTML formoje įvesti slaptožodžiai (du laukai privalo turėti vienodas reikšmes) sutampa.

10.6 Parašykite CGI skriptą, išvedantį visus duotu momentu prisijungusius varotojus, paleistus procesus, bei kompiuterio apkrovimą web
  naršyklėje.

Į viršų