Szkriptnyelvek II. Perl programok

Hasonló dokumentumok
Szkriptnyelvek. 1. UNIX shell

BASH script programozás II. Vezérlési szerkezetek

AWK programozás, minták, vezérlési szerkezetek

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

A programozás alapjai

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

AWK programozás, minták, vezérlési szerkezetek

Programozás II. 2. Dr. Iványi Péter

Listák, szótárak, fájlok Listák, szótárak, fájlok

A C programozási nyelv I. Bevezetés

Informatika terméktervezőknek

S z á m í t ó g é p e s a l a p i s m e r e t e k

Operációs rendszerek gyak.

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

1. Alapok. #!/bin/bash

Bevezetés a programozásba. 8. Előadás: Függvények 2.

A C programozási nyelv I. Bevezetés

1. Jelölje meg az összes igaz állítást a következők közül!

Java programozási nyelv

AWK programozás Bevezetés

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

Programozási nyelvek JAVA EA+GY 1. gyakolat

C programozás. 1 óra Bevezetés

1. Egyszerű (primitív) típusok. 2. Referencia típusok

Mintavételes szabályozás mikrovezérlő segítségével

Programozás I gyakorlat. 10. Stringek, mutatók

Programozás 1. Dr. Iványi Péter

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

Programozás alapjai 6. előadás. Wagner György Általános Informatikai Tanszék

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

A C programozási nyelv II. Utasítások. A függvény.

Imperatív programozás

A JavaScript főbb tulajdonságai

Java II. I A Java programozási nyelv alapelemei

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

A C programozási nyelv VI. Parancssori argumentumok File kezelés

Programozás alapjai. 7. előadás

PYTHON. Avagy hosszú az út a BioPythonig

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

Készítette: Nagy Tibor István

Operációs rendszerek gyakorlat

Szövegek C++ -ban, a string osztály

Python tanfolyam Python bevezető I. rész

Kifejezések. Kozsik Tamás. December 11, 2016

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r

Apple Swift kurzus 3. gyakorlat

Óbudai Egyetem. C programozási nyelv

Járműfedélzeti rendszerek II. 4. előadás Dr. Bécsi Tamás

PHP gyorstalpaló, avagy a Hello World-től az űrlapellenőrzésig

A C# programozási nyelv alapjai

Programozás C++ -ban 2007/1

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás

Operációs Rendszerek II. labor. 2. alkalom

Programozás C++ -ban

Kifejezések. Kozsik Tamás. December 11, 2016

ALAPOK. 0 és 255 közé eső számértékek tárolására. Számértékek, például távolságok, pontszámok, darabszámok.

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós május 6. Széchenyi István Egyetem, Gy r

Ismerkedés a Python programnyelvvel. és annak micropython változatával

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Mutatók. Dr. Bécsi Tamás 7. Előadás

1. Alapok. Programozás II

ELTE SAP Excellence Center Oktatóanyag 1

Programozás II. 4. Dr. Iványi Péter

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Programozási nyelvek Java

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 4.ELŐADÁS. Adatbázis alapú alkalmazások készítése PHP-ben

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

Imperatív programozás

A Perl programozási nyelv röviden 79/1

Bevezetés a programozásba I.

Programozás I. 5. Előadás: Függvények

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

Programozás I gyakorlat

Occam 1. Készítette: Szabó Éva

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

Adatszerkezetek 1. Dr. Iványi Péter

További vezérlő valamint számításokat megkönnyítő szerkezetek

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Java II. I A Java programozási nyelv alapelemei

sallang avagy Fordítótervezés dióhéjban Sallai Gyula

A programozás alapjai 1 Rekurzió

Hálózatok építése és üzemeltetése

Forráskód formázási szabályok

C programozási nyelv

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Programozási nyelvek Java

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Programozás C és C++ -ban

A szerzõrõl... xi Bevezetés... xiii

Adatbázis és szoftverfejlesztés elmélet

Gyakorló feladatok Gyakorló feladatok

van neve lehetnek bemeneti paraméterei (argumentumai) lehet visszatérési értéke a függvényt úgy használjuk, hogy meghívjuk

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Bevezetés a programozásba I.

Programozás I. gyakorlat

Eljárások és függvények

Osztályok. 4. gyakorlat

Átírás:

Szkriptnyelvek II. Perl programok

Perl Practical Extraction and Report Language Interpreteres nyelv alkalmas szövegfeldolgozó alklmazások készítésére strukturált programszerkezet Szubrutinok támogatása a UNIX rugalmas file kezelését használja A Perl ingyenes Larry Wall fejlesztette ki munkája megkönyítésére

Perl A Perl-t Larry Wall fejlesztette ki munkája megkönyítésére. Jelntés generátorra volt szüksége, amely több szöveges file-ból adott szabály alapján egy jelentést generál. Mivel az ehhez szükséges eszközök akkor nem álltak rendelkezésre, egy új eszközt hozott létre.

Perl A Perl nyelvnek a C programozási nyelvhez hasonló a strukturája. A C valamennyi operátora megtalálható benne, és a C programvezérlõ szerkezeteinek (if, while..) többsége is Komoly erőssége a C-vel szemben az interpreteres üzemmód és a szöveg és fájlkezelés

Perl programok A Perl szokásos kiterjesztése a *.pl, ami UNIX/ Linux rendszerekben elhagyható Perl programok futtatása vagy az interpreter meghívásával > perl file.pl, Vagy a szkriptbe elején specifikált parancsértelmező és a futtatási jog kiadása (UNIX rendszereken) A perl hibakeresõjét az alábbi módon érhetjük el: perl -d file.pl

Perl adattípusok decimális: 127, 127.0, 1.27E2 hexadecimális: 0x7F, 0x7f Oktális: 0177 karakterlánc: "Hello vilag!\n", 'Hello vilag!' A Perl minden számot dupla pontosságú, lebegõpontos számként tárol. a Perlben nincs egész számú adattípus, de automatikusan konvertál

Tömb $ Skalár @ Hash % Perl változók A változók nincsenek előre deklarálva, és bármelyik változó tárolhat füzért, *egészet* vagy mutatót A változók nem csak elemek homogén sorozatát tárolhatják. Egy véltozó több féle adatot is tárolhat időben egymás után.

Perl változók Bármilyen alfanumerikus karaktersorozat lehet változónév, még kulcsszó is $if $ifthenelse $while $or $andalso

Foglalt változók olyan változók, mint a '$/', vagy, '$,' Speciális változók pl a $_, vagy másnéven default változó. Amennyiben nincs megadva valamelyik szerepre változó, akkor a Perl a $_ változót használja.

Tömbök A tömbváltozók előtt nem $ hanem @ jel van. Ezeknek is lehet értéket adni, de természetesen nem skalár, hanem tömb értéket, pl: @tomb = (1, 2, 3); Itt a @tomb egy tömbváltozó. Mikor hivatkozunk rá, akkor a skalár változóknál megszokott módon tesszük $tomb[0];

Hash A hash nem nullától n-ig indexelhető, hanem bármilyen értéket felvehet. Lehet az index szám, string, mutató, vagy bármilyen más skalár érték. Amikor az teljes hash változóra hivatkozunk, akkor % jelet írunk elé, mikor az egyes elemeire, akkor $ jelet, mivel egy eleme skalár érték. Az értékadás hasonló a tömb értékadáshoz: %scl = (1, 2, 3,4 );

Hash Az egyik elem indexe 1, a másiké 3. Az egyik értéke 2, a másiké 4. Perl nyelv nyújt egy sokkal olvashatóbb szintaxist a skalárokhoz: %tomb = ( ); 1 => 2, 3 => 4,

Változók %variable $variable @variable Pl.: $variable = 1234 @variable = (1,2,3,4) %variable = (1,2,3,4) %variable(1 => 3, 2=>4)

Változók kötése A lokális változókat nem tartja meg a Perl, csak azt a memória helyet, ahol tárolódnak Ezért lehetséges a különböző típusú és tartalmú változók használata. Nem csak egyszerű változókra lehet rámutatni, hanem tömbökre, hash változókra, függvényekre, objektumokra, bármire...

Mutatók Minden változó tartalmazhat (referenciát). A Perl nyelv kétféle referenciát ismer: A puha referencia a változók nevén keresztül éri el a tárolt értéket a kemény referencia a változó helyére mutat. $alma = 1; $korte = 'alma'; $dio = \$alma; print "$$korte = $$dio\n"; 1 = 1

Példa1 $szam=42; $string='? Na jó, de mi volt s kérdés?' print ($szam,' ',$string); Ha kódot a teszt1.pl file-ba irjuk fordítjuk: perl pelda1.p a 42? Na jó, de mi volt s kérdés? Eredményt kapjuk

Példa2 @napok=('va','he','ke','csu','pe','szo'); print(@napok); print($napok[4]); @munkanapok=@napok[1..5] @ureslista=()

Asszociatív tömbök A tömb skalár változókat tárol A tömbnek egész indexeket kell használnia a tömb valamely elemének kijelöléséhez az assziociatív tömb bármilyen értéket használhat. Indexértékeit kulcsnak (key) nevezzük. indexét (a kulcsot) kapcsos zárójelek ({}) közé tesszük

Példa3 $ara{'alma'}=150; $ara{'korte'}=200; print @ara{'alma','korte'}; print keys(%korok}; for $gyumolcsok (keys(%korok)) { print "$gyumolcs $ara{$gyumolcsok}\n"; }

Vezérlési szerkezetek A Perl az utasításokat egymás után hajtja végre Az utasításokat általában pontosvessző zárja le (elhagyható egy blokk utolsó utasításánál). A program blokk utasítások egy csoportja { } között. Ez tekinthető, mint egy utasítás, ami tartalmazhat utasításokat, változókat, stb. A Perl tartalmazza a szokásos vezérlési szerkezeteket.

If if( kifejezés ) blokk vagy if( kifejezés ) blokk else blokk vagy utasítás if kifejezés vagy unless kifejezés

Példa4 Szintaktikai hiba! if( $a eq '1' ) $b = 2 else $b=4 Helyes if kifejezés: if( $a eq '3' ){ $b = 2 } else { $b = 4 }

Ciklusok Elől tesztelő ciklus: while( kifejezés ) blokk Hátul tesztelő ciklus: do blokk while( kifejezés ) For ciklus mint C-ben for( kif1 ; kif2 ; kif3 ) blokk

Ciklusok for $valtozo ( lista ) blokk Ez a ciklus végigmegy a lista összes elemén, és $valtozo minden egyes ciklus lefutásra az aktuális lista elem. Erre az időre ez a változó lokális, utána ugyanaz az értéke, mint ami előtte volt. Ebbe beleértendő az is, ha az értéke undef volt. Egy ciklusból ki lehet jönni előbb is, mint ahogy az véget érne. Ha valahol a ciklus belsejében végrehajtódik egy last utasítás, akkor a ciklus befejeződik.

Ciklusok Ha egy ciklus előtt egy cimke van, akkor a last utasításban erre lehet hivatkozni, és akkor nem feltétlenül a legbelső ciklus futása szakad csak meg, hanem a körülötte levőké is, egészen a cimkézett ciklusig. Ehhez hasonlóan létezik egy olyan utasítás, amelyik újrakezdi a ciklust. Ezt a Perl next-nek hívja (itt is meg lehet adni cimkét).

A ciklus után meg lehet adni egy continue blokkot, amelyik akkor hajtódik végre, ha a ciklusban egy next utasítás van. A redo utasítás, ezt kikerüli, és újraindítja a ciklust.

$i = 0; while( $i < 7 ){ $i ++; print "start $i\n"; next if $i == 1; redo if $i == 2; last if $i == 4; print "end $i\n"; } continue{ print "$i countinue\n"; } start 1 1 countinue start 2 start 3 end 3 3 countinue start 4

Szubrutinok sub teszt { print "Hello Világ"; return; } A szubrutinból kijönni a return utasítással lehet éppen úgy, mint C-ben, de ez el is hagyható. A return után lehet visszatérési érték. Ugyanúgy, mint C-ben egy szubrutinnak mindig van értéke, legfeljebb nem használjuk.

Szubrutinok Egy szubrutint úgy lehet meghívni, hogy a neve elé az & jelet írjuk. Meg lehet hívni úgy is, hogy nem írunnk & jelet, de ez nem minden esetben működik. A függvényeknek paramétert lehet adni. A paramétereket ugyanúgy, mint más nyelveknél, a függvényhívás után kell vesszővel elválasztva írni, zárójelek között. Ezek a @_ tömbbe kerülnek bele, és így a $_[x] formában lehet rájuk hivatkozni.

Szubrutinok &rutin(1,2,3); sub rutin { print $_[0],$_[2],$_[3],"\n"; } rutin(1,2,3); A függvényeken belül hivatkozhatók a globális és a lokális változók is. Lokális kétféle lehet. Az egyik a függvényen belül helyileg lokális, a másik pedig időben, a függvény futási ideje alattlokális.

$v1 = 'global'; $v2 = 'global'; &rutin1; &rutin2; sub rutin1 { v1 $v1 ='v1'; v2 $v2 = 'local'; &rutin2; } sub rutin2 { print "$v1\n$v2\n"; } Szubrutinok global local global global

Szubrutinok print &rutin1(100); sub rutin1 { my $i = shift; if( $i % 2 ) { $i+1 } else{ $i-1 } } 99

Szubrutinok A példában a lokális változóba, egy shift operátorral, amelyikneka default argumentuma a @_ tömb, kivesszük a szubrutin argumentumát. Egy szubrutin értéke megegyezik az utoljára végrehajtott utasítás értékével. Ha ez egy return utasítás, akkor a return után írt kifejezés értéke a visszatérési érték.

Fájlok kezelése A Perl a UNIX operációs rendszerhez lett kitalálva, ahol a fájlal apfogalom, ezért nem csak könyvtári függvények, hanem programszerkezetek is rendelkezésre állnak a fájlok kezelésére. A fájlok megnyitására az open utasítás szolgál, a fájlok bezárására a close.

Fájlok kezelése open(f,"<f1.pl"); open(g,">f2.bak"); while( $line = <F> ){ $line =~ s/",//g; $line =~ s/,"//g; print G $line; } close G; close F;

Fájlkezelés A fájlokat nem változókkal azonosítjuk, hanem handlerekkel (kezelő) A fájl azonosító elé nem írunk$ jelet Az open utasítás második argumentuma nem egyszerűen a fájl neve, hanem egy olyan füzér, amely tartalmazza a fájl nevét és azt, hogy a fájlt hogyan akarjuk megnyitni: Megnyitás lehet: írásra, olvasásra, vagy mindkettőre

Fájlkezelés Ha az open utasításban a második argumentumban a fájl neve előtt nincsen semmilyen jel, akkor a fájlt olvasásra nyitjuk meg. Ha a fájl neve előtt > jel van, akkor írásra nyitottuk meg a fájlt. Ha a fájl neve előtt <jel van, akkor olvasásra. Használható a >> jel a fájlhoz való hozzáírásra, A +< a fájl írására és olvasására. Erre használható a +> jel is, ez azonban megnyitáskor törli a fájlt.

Fájlkezelés Skalár környezetben egy rekordot olvas be, lista környezetben pedig a hátralevő rekordok listáját. Egy rekord általában egy sor, mivel a rekord határoló karakter $/-ben megadva LF Ha $/-nek más értéket adunk, akkor a beolvasás is másképp hajtódik végre. Ha a $/ változónak undef értéket adunk, akkor egész fájlokat tudunk változóba nagyon gyorsan beolvasni.

Fájlkezelés Ha egy fájlon belül akarjuk mozgatni a mutatót, akkor erre a legegyszerűbb módszer a seek függvény meghívása. Formája: seek Handler,Pozíció,Honnan a Handler a fájlkezelő, a Pozíció az a hely ahova állítani szeretnénk a mutatót, a Honnan paraméter pedig lehet 0, 1 vagy 2. Ha 0 akkor a fájlon belül a Pozíció a fájl elejétől számít, ha 1, akkor a mutató a pillanatnyi pozíciójához képest fog elmozdulni, ha pedig 2, akkor a fájl végétől számolunk.

Szkriptnyelvek Általában ajánlatos ezt a függvényt meghívni minden olvasási és írási művelet között. Ennek az oka nem a Perl nyelvben keresendő, hanem azokban a könyvtári függvényekben, amelyeket az operációs rendszer biztosít a Perl programok számára. A seek meghívásának a hatására a kiírandó adatok kikerülnek a pufferből, míg egy olvasás utáni írásnál egyes operációs rendszereken nem.

Fájlok A tell függvény megmutatja a mutató helyét a fájlban. Egy fájlt le lehet vágni a truncate függvénnyel, aminek két argumentuma van: a handler, és az új hossz. Egyszerre több processz is írhat a fájlba. Ha le akarjuk foglalni, akkor az flock függvényt kell meghívni Argumentuma a handler és a lezárás módja:

Fájlok 2 - egyedi lezárás, más nem férhet hozzá a fájlhoz 8 lezárás megszüntetése. A flock függvény addig fog várni, amíg hozzá nem lehet a megfelelő módon férni a fájlhoz, eközben a fájlmutató értéke nem változik.