Osnove Perla - nizovi, brojevi, nizovi, hashovi. Korištenje regularnih izraza za pretraživanje po ključnim riječima. Što su donijele posljednje godine rada?

Predgovor bi, po našem mišljenju, čitatelju trebao dati informaciju na temelju koje će odlučiti treba li mu ova knjiga.

O čemu govori naša knjiga? Riječ je, naravno, o jeziku Perl, jer tako piše u naslovu. Kome treba taj Perl? Oni koji stvaraju CGI skripte, administriraju sustav pišući skripte umjesto da klikaju lijevom tipkom miša, obrađuju tekstove i rješavaju mnoge druge zadatke iz srodna područja a u isto vrijeme treba moćan, ali jednostavan alat koji vam omogućuje stvaranje veliki programi i male programe i brzo ih isprobati. Također je korisno za one koji podučavaju programiranje da razumiju ovaj jezik, jer ima zanimljiva svojstva koja nedostaju tradicionalnim programskim jezicima koji se koriste u procesu nastave.

Sviđaju nam se neke značajke jezika: ovisnost rezultata o kontekstu, asocijativni nizovi, tip podataka typeglob, paketi, implementacija objektno orijentiranog programiranja i, naravno, alati za obradu teksta. Ako vas ne zanima barem saznati što sve to znači, onda možete odložiti knjigu. Ako već znate sve gore navedeno, onda to također možete ostaviti po strani, jer je ova knjiga za one čitatelje koji tek počinju sami učiti Perl.

Izrađen jezik Perl sistemski programer Larry Wall kao UNIX alat koji vam omogućuje "lijepljenje" velikih skripti iz programa koji obavljaju pojedinačne funkcije za rješavanje niza problema vezanih uz administraciju, obradu teksta itd. Kasnije je izašao iz ovog okvira i pretvorio se u pravo programiranje jezik koji odražava mnoge trendove koji su se pojavili u tehnologiji programiranja tijekom proteklog desetljeća i koji je postao raširen u vezi s razvojem interneta. Perl je glavni alat za izradu CGI aplikacija, pogodan za rješavanje problema administriranja web poslužitelja, E-mail i drugim sustavima. Zahvaljujući brzini i lakoći pisanja skripti na ovom jeziku, proširio se i na druge platforme: DOS, Windows, OS/2, Mac, VMS itd. Jedna od glavnih prednosti jezika Perl je njegova otvorenost i pristupačnost. U internetske mreže možete ga dobiti potpuno besplatno izvorni tekstovi perl interpreter (Perl je interpretirani jezik, što je u nekim slučajevima prednost) i njegove module proširenja.

Ova knjiga je priručnik za samoučenje jezika Perl, koji se uči, kako se kaže, od nule, tj. pretpostavlja se da čitatelj nije upoznat s ovim jezikom - naučit će sve što treba dosljednim proučavanjem tema i učvršćivanje pređenog gradiva, odgovaranje na pitanja i izvođenje vježbi, danih na kraju svakog poglavlja. Ponovimo da predloženi materijal predstavlja samo osnove jezika Perl. Ova knjiga ni na koji način nije namijenjena da bude udžbenik programiranja u Perlu. U njoj nećete pronaći metodologiju programiranja ili gotove recepte za rješavanje problema, ne sadrži detaljan opis najčešće korištenih modula i rješavanja problema uz njihovu pomoć, ali ćete nakon čitanja knjige steći osnovno znanje, koji će vam omogućiti da razumijete bilo koju Perl skriptu.

Upravo ćete krenuti na putovanje u svijet Perl programiranja. Vaše će putovanje biti još ugodnije zbog prisutnosti velika količina primjeri koji će se pojaviti usput. Početak našeg putovanja pokriva osnovne pojmove jezika. Postupno ćete naučiti dovoljno o Perlu za stvaranje malih programa. Na kraju našeg putovanja već ćete imati potrebno znanje da biste mogli kreirati potpune aplikacije.

Govorite li neke druge programske jezike? Ako da, onda će vam učenje Perla predstavljati zadovoljstvo. Ako ne, onda nemojte žuriti, isprobajte sve predložene vježbe i primjere i ne bojte se eksperimentirati!

Podrijetlo

Perl je bio rezultat napora jednog čovjeka i, po vlastitom priznanju, lijenosti. ovo - jedinstveni jezik, čija se bit ne može prenijeti jednostavan opis tehnički detalji. Perl je stanje uma.

Jedna od karakteristika jezika je njegovo ime. Ima nekoliko definicija. Perl je izvorno označavao Practical Extraction Report Language. Međutim, programeri ga vrlo često nazivaju Phatologically Eclectic Rubbish Lister ili čak Practically Everything Really Likable.

Odvojimo nekoliko minuta da shvatimo što je Perl i koji su mu zadaci dodijeljeni u vrijeme njegovog stvaranja. Davne 1986. Larry Wall radio je na problemu generiranja izvješća iz velikog broja tekstualnih datoteka koje su se međusobno preklapale. Budući da je Unix programer, i budući da je zadatak uključivao manipuliranje sadržajem tekstualnih datoteka, prvo je pokušao koristiti Awk. No ubrzo je postalo jasno da Awk nije prikladan za taj posao, a kako nije imao drugih kandidata za rješavanje problema, jedino što je preostalo bilo je izumiti vlastiti alat koji bi se mogao koristiti u budućnosti.

Umjesto da gubi vrijeme, Larry je jednostavno izmislio novi programski jezik i napisao tumač za njega. Ovo izgleda kao paradoks, ali nije sasvim točno - ono što radite uvijek je puno posla, ali ako to radite ispravno, onda će vam se taj rad sigurno isplatiti.

Larry je ubrzo ponudio svoju kreaciju zajednici čitača vijesti na Usenetu. Korisnici s pristupom Usenetu pružili su kreatoru Perla učinkovit " povratna podrška", pitajući kako napraviti ovo, ono, treće. Mnoge od tih problema Larry nije ni namjeravao postaviti svom malom novom programskom jeziku.

Novi programski jezik imao je naglasak na upravljanju sustavom i obradi teksta. Nakon nekoliko revizija, već je mogao koristiti regularne izraze, signale i mrežne utičnice. Postao je poznat kao Perl i brzo je postao popularan među Unix programerima, a ubrzo i među nama ostalima.

Larry više ne održava sam Perl, ali zadržava svoju ekskluzivnu titulu glavnog programera.

Perl programi vrlo su slični C programima, možda zato što je Perl napisan u C-u, a možda i zato što su Larryju neki C konstrukti bili zgodni. Ali Perl je manje pedantan i mnogo koncizniji od C-a.

Perl je dizajniran da pomogne programeru rutinski poslovi, koji su preteški ili slabo prenosivi za ljusku, i previše nejasni ili teški za kodiranje za C (ili bilo koji drugi jezik).

Nakon što savladate Perl, možda ćete primijetiti da ćete potrošiti znatno manje vremena na ispravno citiranje različitih parametara ljuske (ili na ispravno izvršavanje C deklaracija), a više vremena na čitanje Usenet vijesti i skijanje niz planinu jer je Perl prekrasan alat koji će vam pomoći da postanete programer. “Neki od starih” su rekli: “Ne biste trebali učiti programski jezik koji radikalno ne mijenja vaše razumijevanje programiranja.” Budite uvjereni, nakon što naučite Perl, gledat ćete na programiranje iz potpuno drugačije perspektive.

Snažni dizajni ovog jezika omogućuju vam stvaranje vrlo učinkovita rješenja I univerzalni alati. Ti se alati mogu nastaviti koristiti jer su programi napisani u Perlu vrlo prenosivi i spremni za korištenje. Kao rezultat toga, imat ćete još više vremena za čitanje Usenet vijesti i odlazak u barove s prijateljima.

Perl je vrlo dobar u rješavanju zadataka niska razina, posebno nakon izlaska pete verzije jezika.

Cijena i licenca

Perl je besplatan. Da budemo precizniji, Perl se distribuira pod GNU Public License. Kompletan izvorni kod i dokumentacija potpuno su besplatni za kopiranje, kompajliranje i ispis. Svi programi koje napišete u Perlu su vaši i možete s njima raditi što god želite.

Osim za UNIX računala, Perl postoji i za druge platforme - Windows, DOS, Atari, Amiga itd.

Imate li instaliran Perl?

Vrlo je lako saznati imate li Perl. Samo izdajte sljedeću naredbu na naredbenom retku:

perl -v Ovo je perl, verzija 5.001
Neslužbena razina zakrpe 1m.
Autorska prava 1987-1994, Larry Wall Win32 port Autorska prava 1995 Microsoft Corporation. Sva prava pridržana.
Razvio hip Communications iNC., //info.hip.com/info/
Perl za Win32 Build 107
Izgrađen 16. travnja 1996@14:47:22
Perl se smije kopirati samo pod uvjetima Umjetničke licence ili GNU Opće javne licence, koja se može pronaći u izvornom paketu Perl 5.0.

Ako primite poruku o pogrešci ili imate verziju 4 Perla, obratite se svom Administrator sustava ili sami instalirajte Perl.

Vaš prvi Perl program

Vaš prvi Perl program ilustrira ispis retka teksta na ekran. Prvo morate stvoriti jednostavan tekstualna datoteka, koji će sadržavati vaš Perl program. Zatim ćete pokrenuti programsku datoteku.

Izrada programa

Perl program je obična tekstualna datoteka koja sadrži nekoliko jezičnih konstrukcija. Potonji obično nalikuju mješavini C-a, Unix shell skripte i na engleskom. Općenito, to je upravo tako.

Perl kod može biti vrlo raznolik. Evo nekih osnovnih pravila:

Razmaci na početku retka se zanemaruju. Jezičnu naredbu možete postaviti gdje god želite: na početku retka, uvučeno (preporučeno) ili čak poravnato udesno (ali u ovom slučaju bit će izuzetno teško pročitati tekst programa i razumjeti bilo što);

Jezična konstrukcija mora završavati točkom i zarezom osim ako je posljednja konstrukcija u bloku ili datoteci, ili je naredba eval;

Razmaci, kartice, prazne linije su nebitni - jedan prostor je dobar kao stotinu istih prostora. To znači da jezičnu konstrukciju možete rastaviti na više redaka radi jasnoće. Niz je obično niz znakova okruženih navodnicima. Poglavlje 2, "Literali brojeva i nizova", sadrži više Detaljan opis linije;

Sve što slijedi iza znaka "#" zanemaruje se osim ako nije unutar retka. Upotrijebite ovu značajku da osigurate svoj kod korisni komentari. Treba napomenuti da u Perlu nema višerednih komentara (na primjer, kao u jeziku C).

Slično shell skripti, Perl program se sastoji od svih Perl iskaza prisutnih u datoteci, koji se zajedno smatraju jednim velikim programom koji se treba izvršiti. Ne postoji koncept glavne funkcije, kao u C-u, u Perlu.

Sve sljedeće ni na koji način ne tvrdi da je potpuno ili točno.

Želim vas unaprijed upozoriti da vas ovaj članak neće učiniti super PERL programerom, ali će vam dati neke potrebne početne informacije, što će vam pomoći u daljnjem proučavanju ovoga najzanimljiviji jezik programiranje.

Odlučio sam napisati ovaj članak nakon što sam naučio koliko je teško "naviknuti" na sve, čak i ako imate nekakav PERL priručnik pri ruci. Svugdje se već na samom početku počnu pozivati ​​na neke misteriozne termine i naredbe, a vi samo iznenađeno trepnete očima ili (ako nešto još razumijete) natjerate te programe da rade (ne “kako bi trebalo”, nego općenito !). Ovaj članak bi se mogao nazvati “PERL for dummies” kada bi obuhvatio cijelo gradivo, ali ovdje je moj cilj dati vam samo potrebne početne pojmove i takoreći “pripremiti vas za daljnje bitke” :). Iako je vrlo moguće da će u budućnosti, “na zahtjev radnika”, ovaj mali članak prerasti u nešto više.

Pa... počnimo!

Prvo, dopustite mi da vam kažem da PERL mora biti instaliran na vašem računalu. Neki moji prijatelji potpuno su preskočili ovu naizgled jednostavnu operaciju, a onda su, nakon što su napisali jednostavan program, pokušavali da ga pokrenu dugo vremena... ;) Najpristupačniji PERL paket (po mom mišljenju) je ActivePerl, iako ovaj paket je namijenjen korisnicima Windowsa, a ako imate UNIX, možete preuzeti nešto izvorno s www.perl.com. Na ovaj ili onaj način, dobit ćete ga i instalirati perl za sebe (ako to već niste učinili). Dakle: imat ćete novu “perl” mapu, ali to uopće ne znači da sve programe treba smjestiti tamo :) Perl, koji sjedi tamo, izvršava samo sve vaše genijalne kreacije s ekstenzijom *.pl, i to samo tamo gdje sami se nalaze - jedan korisnik zna :) (istinito za Windows korisnici s instaliranim ActivePerl paketom, jer pridružuje *.pl datoteke).

Jer Budući da je ovaj članak prvenstveno namijenjen korisnicima Windowsa, smatram se obaveznim reći vam da za programe koji se izvode u ovom operativnom sustavu uopće nije potrebno svaki program pokretati linijom:

#!/usr/bin/perl

Stvar je u tome što je ovaj jezik stvoren na temelju UNIX OS-a, a oni nam pokušavaju prenijeti ovu liniju kao "nasljeđe" iz svog operativnog sustava. Međutim, trebali biste upamtiti da poslužitelj (ako odlučite tamo učitati svoje programe) također može imati instaliran UNIX.

Sada malo o načinu pisanja.
Savjetujem vam da počnete koristiti jednostavnu bilježnicu kako biste zapamtili sve naredbe i sintaksu programiranja. Ubuduće možete koristiti nekakav editor, ali to više nije zabavno :), a još više nepoželjno za one koji se tek upoznaju s ovim programskim jezikom, i programiranjem općenito.

Gotovo svi tutoriali na ovom jeziku počinju s najjednostavnijim programom, koji izgleda otprilike ovako:

print("zdravo, SVIJETE!\n");

Neki od vas su vjerojatno već kopirali gornji program u svoju datoteku i primijetili da se brzo otvara i jednako brzo zatvara. To je zbog činjenice da je program program, i nakon što se izvrši odmah će se zatvoriti, pa dodajte još jedan red u program sa sljedećim sadržajem:

Na kraju će sve izgledati ovako:

print("zdravo, SVIJETE!\n");
<>;

Za neupućene ne izgleda tako jednostavno... Čak pomalo i zastrašujuće... Ali ovo je samo za neupućene, zapravo, sve jednostavnije ne može biti! :) Ne možete vjerovati? Sada ću to dokazati.
Prvo, morate znati da je ispis naredba koja ispisuje informacije na standardni izlaz STDOUT (STanDart OUT ili, jednostavnije rečeno, izlaz na monitor).
Drugo, nerazumljivost u obliku \n je prijelaz na novi red, ali ne program, kako bi se neki mogli bojati, već informacije na ekranu, tj. ako biste nastavili tekst u navodnicima, onda bi iza ovog znaka bilo ispisano sa nova linija. I ako ste trebali koristiti u samom tekstu obrnuta kosa crta(shells:), onda trebate staviti još jednu školjku ispred njega. Na primjer:

ispis "\a"; #Naredba nakon koje će Perl #izvesti signal SPICER-u print "\\a"; #Perl će jednostavno ispisati \a

Onda vas želim usrećiti: nema potrebe za zagradama :) Njihova upotreba u potpunosti ovisi o vašem raspoloženju, iako u priručnicima piše da to navodno pomaže pri isticanju teksta u programu. Općenito - tko vam se više sviđa...
Kao što ste vjerojatno već pogodili, navodnici su potrebni da bi se u njih stavio tekst, tako da ostaju dvije nejasne točke. Ali prije nego što se zaustavim na njima, mislim da je potrebno objasniti vam kakve informacije postoje u Perlu.
Osnovna jedinica informacija u Perlu je skalar, tj. zasebna vrijednost pohranjena u zasebnoj varijabli.

$a = "zdravo, svijete!"; #Dodijelite tekst varijabli $a
$b = 777; #Dodijelite varijabli $b neki broj

Ove varijable pohranjuju nizove, brojeve i reference. U ovom slučaju, potrebno je razumjeti razliku između brojeva kao takvih i brojeva sadržanih u nizu.

$abc = "123"; #Broj u redu
123 $ = 123; #Broj kao takav

Ako vam je potreban broj za izračune, jednostavno nemojte koristiti dvostruke navodnike.

Točka i zarez na kraju svakog retka je zapravo... kraj retka, što znači da možete napisati cijeli program u jednom retku, ali žao nam je redaka ili tako nešto :) Postoji iznimka od gornjeg : znak # označava da je sve što je u retku iza njega komentar i da se više ne odnosi na program.
Dijamant znak<>- ovo je zadana postavka ili govoreći jasnim jezikom- standardni unos s monitora (objasnit ću: na monitoru se pojavljuje zahtjev, a vi unosite, naravno, preko tipkovnice. Zatim pritisnete enter i upisana vrijednost je već u Perl varijabli, ako je postavljena ). Cijeli trik dodavanja ovog dijamanta u našem slučaju je taj da će vas pitati za ovaj unos dok ne pritisnete tipku "enter", a budući da program ne pokazuje što učiniti s tim unosom, perl će jednostavno zaboraviti na njega i smatrajte naš program dovršenim. I kao rezultat izvršavanja ovog programa, vi i ja ćemo vidjeti tekst Hello, world! .

Sada malo zakomplicirajmo naš program:

print "unesite svoje ime: ";
$ime =<>;
print "zdravo $name!";
<>;

Trebali biste razumjeti da se programi izvode redak po redak, tj. prvo prvi red, nakon njega drugi itd.

Dakle, u prvom retku od nas se traži da unesemo korisničko ime. U drugom redu to čitamo u varijablu $name. $name je, kao što je spomenuto, Perl skalarna varijabla koja počinje znakom dolara. Gledajući unaprijed, reći ću vam da osim varijabli koje počinju s dolarom, postoje i nizovi (@array), hashovi (%hash) i nekoliko drugih vrsta o kojima je prerano govoriti. Između varijable i romba postoji jednakost, što znači da rezultat upita pridružujemo varijabli. U trećem redu ispisujemo riječ hello, a nakon nje ono što je pohranjeno u varijabli $name. U našem slučaju, ovo je ime koje smo tražili da unesete.

Uzmimo još jednu diverziju u kojoj ću vam reći što možete učiniti s varijablama... S njima možete učiniti SVE! I ovo nije pretjerivanje. Na primjer, ovo je moguće:

$a = 3;
$b = 4;
$c = $a+$b; #Dodajte dvije varijable i
#dodijeli ih trećem
ispis $c; # Ispiši dobiveni broj
ispis $a+$b; # ista stvar, samo bez
# dovođenje treće varijable

Nadam se da je s ovim sve jasno... U međuvremenu, neki ljudi shvate, mi ćemo napisati program koji izvršava DOS dir naredbe. Za one koji ne znaju, dir je naredba koja prikazuje sadržaj direktorija u kojem se nalazite.

$dos = `dir`;
ispis $dos;
<>;

Ovaj program čita rezultat izvršenja u varijablu $dos dir naredbe, koja se nalazi u povratnim navodnicima (da su to jednostavni navodnici, to ne bi bila naredba, nego samo riječ) i onda upravo taj rezultat prikazuje na monitoru.

Vratimo se sada, da tako kažem, našim ovcama, odnosno za sada samo janjcima :) Naučili smo kako prikazati tekst koji nam treba na ekranu, primati informacije od korisnika, a također smo naučili da DOS naredbe idu natrag navodnici će se izvršavati kao DOS naredbe :) Vrijeme je da napišete program koji neće tražiti ništa više od ovih istih naredbi:

print "unesi naredbu: ";
chmod($com =<>);
ispis `$com`;
<>;

Iz sigurnosnih razloga toplo preporučam da ne ulazite naredba FORMAT, pogodite zašto :) Od novotarija treba istaknuti izgled chmod naredbe(). Ova naredba uklanja znak novog retka \n iz informacija koje primamo u zahtjevu, a koji je tamo prema zadanim postavkama. Ono što je u drugom retku je skraćena verzija dva retka:

Ovim dobivamo samo nekoliko znakova, ali je svejedno lijepo :)

U ovom trenutku, vjerujem da ste dovršili prve korake i da ste spremni nastaviti trnovit put učenja Perla.

Pojavio se 1987.

Ovaj programski jezik bogat je mogućnostima za rad s tekstom, što određuje njegovo glavno područje primjene - posebice manipulaciju tekstom.

Ovaj će vas članak provesti kroz korake za instaliranje Perl runtimea, odabir razvojnih alata i stvaranje vašeg prvog programa. Na kraju ovog vodiča pronaći ćete popis izvora koji će vam pomoći da brzo svladate osnove Perla, kao i dublje istražiti jezik.

Perl je jedini jezik u kojem programi izgledaju isto prije i nakon RSA enkripcije.

U vrijeme pisanja ovog materijala Trenutna verzija tumač je 5.22.0. Perl 6 trebao bi biti objavljen 2015., ali još nije dobro dokumentiran.

Programski jezik Perl se izrazito ne preporučuje kao jezik za učenje programiranja. Ako ste apsolutni početnik, bolje je započeti s nečim manje destruktivnim za vašu krhku svijest. Ozbiljno, evo što je Jon Ribbens imao za reći o ovom jeziku:

PHP je malo zlo koje su stvorili nesposobni početnici, dok je Perl veliko i podmuklo zlo koje su stvorili vješti, ali uvrnuti profesionalci.

Usput, ni vi ne biste trebali početi s PHP-om. Sada prijeđimo na posao.

Runtime okruženje

Na ovaj trenutak Perl je službeno podržan na tri vodeće platforme: Mac OS X, Unix i Windows. Na prva dva od njih, Perl runtime okruženje je unaprijed instalirano, a njegova verzija se može pronaći pomoću naredbe perl -v (najnovija verzija se može preuzeti), a za operativni sustavi Windows obitelj Perl tumač dostupan je za preuzimanje na ovoj stranici. Preporuča se odabrati ActivePerl (distribucija iz ActiveState-a) kao najčešći.

Integrirano razvojno okruženje (IDE)

Perl, nažalost, nije jako popularan među programerima razvojnog okruženja, tako da imate samo mali broj specijaliziranih alata za odabir.

Padre, Perl IDE

Višeplatformsko, lagano razvojno okruženje dizajnirano posebno za Perl i prilagođeno početnicima. Uz tradicionalno isticanje sintakse i automatsko dovršavanje, također ima ugrađene alate za refaktoriranje. Usput, sam Padre je napisan u Perlu 5.

Urednici teksta

Kao i kod bilo kojeg drugog programskog jezika, naravno, imate veliki izbor višeplatformskih uređivača teksta koje možete izabrati, od unaprijed instaliranih bilježnica do praktičnijih alata za uređivanje izvorni kod s isticanjem sintakse, automatskim dovršavanjem itd. Posebno obratite pozornost na:

  • KomodoEdit - skraćena verzija komercijalnog razvojnog okruženja Komodo IDE, koju je razvio ActiveState (isti onaj koji podržava ActivePerl distribuciju), ima funkcije automatskog dovršavanja, označavanja sintakse, više pokazivača i savjete za dokumentaciju;
  • Vim- uređivač teksta, čije sučelje može biti neobično za Windows korisnika; podržava označavanje sintakse;
  • Sublime Text jedan je od najboljih alata za uređivanje izvornog koda s isticanjem sintakse, automatskim dovršavanjem itd., čija je funkcionalnost proširena mnogim postojećim dodacima;
  • Notepad++ je lagani uređivač teksta koji ima najispravnije isticanje sintakse nakon KomodoEdita; Funkcionalnost se može proširiti dodacima, ali ima ih dosta posebno za Perl.

CodeGround

Također, ako želite samo isprobati Perl programiranje i ne želite instalirati dodatne softver na svoje računalo, možete koristiti uslugu CodeGround koja omogućuje pristup mrežnim razvojnim okruženjima s osnovnom funkcionalnošću za većinu programskih jezika, uključujući Perl.

Prvi "Hello, world!" u Perlu

Tradicionalno, predlažemo da svoje upoznavanje s novim jezikom započnete s dobro poznatim programom:

Ispis "Hello World\n";

Spremite ovaj redak u datoteku hello.pl i pokrenite program koji ste upravo izradili naredbom:

Perl pozdrav.pl

Međutim, prvo se uvjerite u to izvršne datoteke Perl je među vašima varijable okoline (varijable okoline), kao i da perl pozivate iz mape s izvorna datoteka pozdrav.pl . Ako uspijete, vidjet ćete očekivani "Hello, world!"

Čestitamo, počeli ste pisati Perl!

A onda na putu...

Izvrstan vodič na engleskom jeziku za programski jezik Perl za brzi početak možete ga pronaći na tutorialspoint.com. Osim toga, postoji službeni resurs za obuku -