ČVUT FIT: BI-SKJ: Perl



Podobné dokumenty
--Různé-- Ovladače souborů Formáty Typeglob - záznamy z tabulky symbolů - různé typy objektů se stejným jménem: jmeno %jmeno,&jmeno...

Základy PERLu snadno a rychle

A7B38UOS Úvod do operačních systémů. 6. Cvičení. Příkazy sed a awk

Regulární výrazy. Filtry grep, sed a awk.

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

awk programovatelný filtr

NPRG030 Programování I, 2010/11

Programování v jazyce JavaScript

Úvod do programovacích jazyků (Java)

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

NPRG030 Programování I, 2016/17 1 / :58:13

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Basic256 - úvod do programování Příklady. ing. petr polách

SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů

Přednáška 4. Regulární výrazy. Filtry grep, sed a awk. Úvod do Operačních Systémů Přednáška 4

VISUAL BASIC. Práce se soubory

Skriptovací jazyky. Obsah

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Obsah. Začínáme programovat v Ruby on Rails 9. Úvod Vítejte v Ruby 15. O autorovi 9 Poděkování 9

Jazyk C# a platforma.net

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Úvod do databázových systémů

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Úvod do Operačních Systémů

Úvod do databázových systémů

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z

Proměnné a parametry. predn_08.odt :00:38 1

Konstruktory překladačů

Programovací jazyk Pascal

MAXScript výukový kurz

Úvod do programovacího jazyka Perl Patrick M. Ryan

Klíčová slova: dynamické internetové stránky, HTML, CSS, PHP, SQL, MySQL,

PROGRAMOVÁNÍ V SHELLU

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

5 Přehled operátorů, příkazy, přetypování


Vstupní požadavky, doporučení a metodické pokyny

Programování v jazyce JavaScript

Skripty základy VB, vestavěné objekty, příklady

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Tvorba výrazu: speciální znaky shellu se uvádějí do apostrofů jednotlivé části výrazu se oddělují mezerou

Přednáška 8. Proměnné. Psaní a ladění skriptů. Parametry skriptu. Vstup a výstup. Konfigurační soubory shellu. Úvod do Operačních Systémů Přednáška 8

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 23, 2016

Jazyk C++, některá rozšíření oproti C

Sekvenční a podmíněné provádění

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Programování v Pythonu

StruËn obsah. Část I JavaCo? Vše ohledně JavaScriptu 17. Část II Použití JavaScriptu v praxi 91

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

Algoritmizace a programování

Základy programování (IZP)

Úvod do programování. Lekce 1

Nastroje na zpracovani textu:

Sada 1 - Základy programování

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Paměť počítače. alg2 1

Konečný automat. Jan Kybic.

Operační systémy. Cvičení 4: Programování v C pod Unixem

Inovace bakalářského studijního oboru Aplikovaná chemie

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_25 09

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Algoritmizace a programování

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

První kapitola úvod do problematiky

Regulární výrazy. Vzory

Skripty - úvod. Linux - skripty 2

ZPRO v "C" Ing. Vít Hanousek. verze 0.3

cyklus s daným počtem opakování cyklus s podmínkou na začátku (cyklus bez udání počtu opakování)

BASH. Kouzla s příkazovou řádkou. Petr Koloros

Úvod do programování - Java. Cvičení č.4

Jihočeská univerzita v Českých Budějovicích Pedagogická fakulta. Tvorba balíku skriptů pro správu uživatelských účtů v UNIXu.

Základy programování Proměnné Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události

Přednáška 3. Rekurze 1

C2110 Operační systém UNIX a základy programování

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Příkazové skripty Procedurální jazyky Lua a ostatní

Základy programování (IZP)

VÝRAZY výrazy = operandy prokládané operátory, vyhodnocované podle priority operátorů

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

katedra informatiky FEI VB-TU Ostrava 10. jna 2005 etr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna / 25

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

ŘÍDÍCÍ STRUKTURY - PODMÍNKY

Příkazy if, while, do-while, for, switch

Operátory. Základy programování 1 Martin Kauer (Tomáš Kühr)

6 Příkazy řízení toku

PSK3-9. Základy skriptování. Hlavička

Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky -

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Funkce, podmíněný příkaz if-else, příkaz cyklu for

Programování v Pythonu

X36UNX 16. Numerické výpočty v sh příkazy expr, bc, dc. Zdeněk Sojka

Transkript:

ČVUT FIT: BI-SKJ: Perl J. Škvor, březen - duben 2011 Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního 1 města Prahy. Praha & EU: Investujeme do vaší budoucnosti

Perl: úvod Practical Extraction and Report Language 1986 Larry Wall Perl 5.10, různé platformy původně: zpracování textu dnes: administrace, web, databáze, http://www.perl.org Perl 6: vývoj ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 2

Perl: přehled regulární výrazy asociativní pole podobnost s C, efektivita kódu CPAN benevolence proměnlivá syntaxe bez datových typů kontextová závislost, přizpůsobení implicitní proměnné ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 3

Perl: základy textový soubor, *.pl, spustitelný perl e příkaz #!/usr/bin/perl # komentáře za příkazy; deklarace = 1. použití bloky { } ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 4

Perl: proměnné $skalár (číslo, řetězec, odkaz) @pole (heterogenní) %hash (asociativní pole) &funkce *alias SOUBOR $a, @a, %a jsou různé proměnné ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 5

Perl: příkládky print "hello hello, world!\n"; $prep prep=sqrt sqrt($odv1**2+$odv2**2); while(($je ($je = ($cis % $delitel delitel)) && $delitel delitel++ <= sqrt($cis)) ($cis)){}; while (<>) { for (split split//) {$x{$_ $_}++}} ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 6

Perl: obfuscated 3-001-%u-031-%f(:s)3-1-%u-34-%f( :gns)%{<1:%{=%u:%{*<71(zs)%{-01- %{*51-54-%f-%f(: s)3-1-%u-04-cm` bj(:%b,?%bs)3-1-%u-311 (:%G<,041 :v)1-%l-31-c-%x(:v)%g-%l-,021-c- %x(:%b<,91:v),31-041-,4-b-%c(:v),91-041-,74-b-%c(:%e<,%i:v)1-02 1-31-E-%x(:v),%I-021-, 91-E-x(:% ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 7

Perl: skaláry čísla obvykle; 0x11, 0b11, 1_000_000 řetězce "ahoj $jm" ' ahoj $jm', `date` qq/ahoj $jm/ q(ahoj) qx!date! escape \n \t \L \U \l \u \E auto konverze číslo - řetězec here document << print <<konec konec; Ahoj babi, konec $dopis = <<konec konec; Ahoj babi, konec ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 8

Perl: operátory číselné ** % += -= **= %= & ^ << >> $x++; ++$x; $x-- --; --$x; $kc -= $kc % 100; $x += $x + ($x << 3); logické hodnoty, false: 0 "" "0" undef ostatní = true relační operátory: číselné X řetězcové (!) 'jablko jablko' == 'hruska hruska <=> cmp ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 9

Perl: operátory logické &&! ^ and or not xor zkrácené vyhodnocení řetězcové. x.= x= ternární operátor $a > 0? print "kladne kladne" : print "zaporne zaporne" priorita, asociativita while ($a!= $b) { $a > $b? ($a-=$ =$b):($b b):($b-=$a); } ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 10

Perl: std. funkce číselné: sqrt, sin, abs, řetězcové index(řetěz, podřetěz [, offset]), rindex substr(řetěz, start [, délka]); substr($prom, 5, 2) = 'ahoj'; length, reverse, lc, uc, ord, chr chop, chomp, printf, sprintf ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 11

Perl: vstup diamantový symbol <> print "zadej cislo:"; $cis = <STDIN>; print "zadej jmeno:"; $jm = <STDIN>; chomp($jm); );#\n chomp($jm = <STDIN>); while ($radek = <STDIN>) { print $radek radek; } ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 12

Perl: řídící struktury if (podmínka) { true příkazy; } else { false příkazy; } if... elsif... unless (podmínka) { false příkazy; } else modifikátory: příkaz if podm; příkaz unless podm; ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 13

Perl: cykly while (podmínka) { príkazy } until (podmínka) { príkazy } #negace modifikátory: příkaz while podmínka; příkaz until podmínka; #negace do {} while (); do {} until (); # alespon 1x ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 14

Perl: cykly for ($i = 0, $j=10; $i < 10; $i++, $j--) { } NAVESTI: while (podm) { last NAVESTI if neco; next NAVESTI unless necojineho; redo NAVESTI if jestenecojineho; } continue { iterační blok } foreach $x (2, 3, 5, 7, 11, 13) { print $x } ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 15

Perl: implicitní proměnná while ($radek = <STDIN>) { print $radek } while ($_ = <STDIN>) { print $_ } while (<STDIN>) { print } print $radek while ($radek = <STDIN>); print while <STDIN>; print while <>; ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 16

Perl: pole @ovoce ovoce=("jab =("jablko","hruska","svestka ko","hruska","svestka"); "); @ovoce ovoce= qw/jablko hruska svestka/; print $ovoce[0]; # prvek začíná $ print $ovoce ovoce[-1]; print "@ovoce ovoce"; ($prvni prvni, $druhe druhe) = @ovoce ovoce; @ovoce = (@ovoce ovoce, "sliva sliva", @tropicke tropicke); ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 17

Perl: pole poslední index $# počet prvků: $#ovoce $delka = @ovoce ovoce; ovoce[@ovoce]='kiwi'; nový na konec: @ovoce[@ovoce slices @ovoce[0, 3] = qw/tresen bluma/; @prvni_posledni = @ovoce[0, -1]; ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 18

Perl: pole foreach $ovo (@ovoce ovoce) { print $ovo } odkazem! foreach $ovo (@ovoce ovoce) { ovo=uc($ovo uc($ovo) } @radky = <STDIN>; = <STDIN>; # pozor! cely soubor funkce: push, pop, shift, unshift, splice, map, grep, split, join, sort ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 19

Perl: pole - sort sort { $a cmp $b } @pole sort { $a <=> $b } @pole sort funkce @pole ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 20

Perl: asociativní pole index: cokoliv; klíč => hodnota %telef = ('pepa pepa' => '123456789', lojza lojza' => '111222333 ); %telef = qw/pepa 1234 lojza 1112/; print $telef {'pepa pepa }; $telef {'franta franta'} = 888000888; @jmena = keys %telef telef; @cisla = keys %telef telef; ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 21

Perl: asociativní pole užití: tabulky ala telef. seznam čítače, strukturované dat. typy foreach $jm (sort keys %telef telef) { print "$jm jm: $telef{$jm} telef{$jm}\n"; } while (($jm jm, $tel tel) = each (%telef telef)) {... } telef{pepa}=''; $telef{pepa telef{pepa}= }=undef undef; delete $telef{pepa telef{pepa}; rozdíl: $telef{pepa funkce defined, exists ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 22

Perl: asociativní pole slices @telef {petr petr, pavel} = qw/222 444/; ($petr petr, $pavel pavel)=@ )=@telef{petr,pavel telef{petr,pavel}; @mesice = qw/le un br du kv ce/; @rimsky = qw/i II III IV V VI/; @rim2mes { @rimsky } = @mesice mesice; print $ENV{PATH}; while (<>) { for (split split//) {$x{$_ $_}++}} ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 23

Perl: soubory open SOUB, ~/ ~/dopisy/babicce.txt dopisy/babicce.txt'; open SOUB, >~/ >~/dopisy/babicce.txt dopisy/babicce.txt'; open SOUB, >>~/ >>~/dopisy/babicce.txt dopisy/babicce.txt'; open (SOUB, 'dopis.txt dopis.txt ) die( Neni Neni"); unless (-e 'dopis.txt dopis.txt ) {... } $radek = <SOUB>; @radky = <SOUB>; print SOUB Ahoj babi! ; close SOUB; ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 24

Perl: soubory open F, "ls - l "; open F, " sendmail... "; open F, "$soubor.txt"; open GZ, " gzip > $soubor.gz"; while (<F>) { print GZ; } close F; close GZ; open GZ, "gunzip -c $soubor.gz "; open F, ">$soubor.kopie"; print F while (<GZ>); close F; close GZ; ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 25

Perl: soubory open F, "+< $soubor"; open F, "+> $soubor"; open F, "+>> $soubor"; seek, eof, sysread, syswrite ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 26

Perl: souborové operátory -e existence -r lze číst -w lze psát -d adresář -T textový -M modifikace... ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 27

Perl: adresáře @soubory = <*.pl> while (<*.html>) {... } opendir DIR, $adresar adresar; @soubory = readdir DIR; closedir DIR; ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 28

Perl: regulární výrazy operátor srovnání =~!~ while ($radek = <>) { if ($radek =~ m/vzor/) /) print $radek radek; while (<>) { if (/vzor vzor/) { print; }} while (<>) { print if /vzor vzor/; } while (<>) { /vzor vzor/ && print; } perl ne print if /vzor/ ; soubor perl ne /vzor/ && print ; soubor ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 29

Perl: regulární výrazy meta. [ ] [^ ] \ ^ $ ( ) (? ) třídy \d \D \w \W \s \S \b \B \z \Z \A kvanti- fikátory * +? {m} {m,n} {m,} modi- fikátory i g x e ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 30

Perl: regulární výrazy $hracky hracky=q/ =q/mam 123 auticek 56 lodicek a 32 parnicku/; $pocet = @pocty = $hracky =~ /(\d+)/g; $passwd passwd= #zaznam z /etc/passwd q root:x:0:1:super- user:/root:/sbin/sh ; ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 31

kvantifikátory = hladové! => *? ($un, $home) = $passwd =~ /(.*?):.*?:.*?:.*?:.*?:(.*?)/; lépe => negace ($un, $home) = $passwd =~ /([^:]*):(?:[^:]*:){4}:([^:]*)/; ($un, $home) = $passwd =~ /([^:]*):(?:([^:]*):){5}/; ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 32

Perl: regulární výrazy $radek =~ s/vzor/náhrada hrada/; $radek =~ s/(\w+) w+)\s+( s+(\w+)/ w+)/\2 \1/; $vyplaty = q/pepa novak 12345/; $vyplaty =~ s/(\d+)$/$1*1.10/e; $radek =~ tr/a-z/d z/d-za za-c/; $pocet_hvezd = ($radek =~ tr/*/*/); $pocet = $radek =~ tr/ //d; $pocet = $radek =~ tr/ //s; ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 33

Perl: funkce sub prvocislo{ # parametry v poli @_ => $_[0] for ($d=2; $d<=sqrt sqrt($ ($_[0] _[0]); $d++){ $_[0] % $d return 0; } return 1; } print &prvocislo($x prvocislo($x)? "ano ano" : "ne ; ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 34

Perl: funkce parametry @_ odkazem proměnný počet parametrů rozlišení? sub koduj{ tr/a-z/d-za za-c/ for (@_) } ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 35

Perl: funkce sub x{ for ($i=0; $i < 10; $i++) { print "*" } } sub y{ for ($i=0; $i < 10; $i++) { &x() } } &y(); ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 36

Perl: funkce sub x{ for (my $i=0; $i < 10; $i++) { print "*" } } sub y{ for (my $i=0; $i < 10; $i++) { &x() } } &y(); ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 37

Perl: funkce sub x { #jak na parametry hodnotou my $parametry = @_; my ($par1, $par2) = @_; my ($par1) = shift; my ($par1, $par2) =(shift,shift shift,shift); return $par1 + $par2; } &x(3, 5); print(&x(@cisla)); ČVUT FIT, BI-SKJ Perl, J. Škvor, březen 2011 38

BI-SKJ: Perl Pokračování příště... Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního 39 města Prahy. Praha & EU: Investujeme do vaší budoucnosti