abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 14:44 | Nová verze

    Byla vydána verze 4.0.0 programovacího jazyka Ruby (Wikipedie). S Ruby Box a ZJIT. Ruby lze vyzkoušet na webové stránce TryRuby. U příležitosti 30. narozenin, první veřejná verze Ruby 0.95 byla oznámena 21. prosince 1995, proběhl redesign webových stránek.

    Ladislav Hagara | Komentářů: 0
    včera 02:11 | Komunita

    Všem čtenářkám a čtenářům AbcLinuxu krásné Vánoce.

    Ladislav Hagara | Komentářů: 17
    včera 02:00 | Nová verze

    Byla vydána nová verze 7.0 linuxové distribuce Parrot OS (Wikipedie). S kódovým názvem Echo. Jedná se o linuxovou distribuci založenou na Debianu a zaměřenou na penetrační testování, digitální forenzní analýzu, reverzní inženýrství, hacking, anonymitu nebo kryptografii. Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    23.12. 18:33 | Nová verze

    Vývojáři postmarketOS vydali verzi 25.12 tohoto před osmi lety představeného operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME Shell on Mobile, KDE Plasma Mobile, Phosh a Sxmo.

    Ladislav Hagara | Komentářů: 0
    23.12. 13:55 | Nová verze

    Byla vydána nová verze 0.41.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 6.1 nebo novější a také libplacebo 6.338.2 nebo novější.

    Ladislav Hagara | Komentářů: 0
    23.12. 12:44 | Nová verze

    Byla vydána nová verze 5.5 (novinky) skriptovacího jazyka Lua (Wikipedie). Po pěti a půl letech od vydání verze 5.4.

    Ladislav Hagara | Komentářů: 0
    22.12. 23:44 | Nová verze

    Byla vydána nová verze 5.4.0 programu na úpravu digitálních fotografií darktable (Wikipedie). Z novinek lze vypíchnout vylepšenou podporu Waylandu. Nejnovější darktable by měl na Waylandu fungovat stejně dobře jako na X11.

    Ladislav Hagara | Komentářů: 0
    21.12. 05:00 | Nová verze

    Byla vydána beta verze Linux Mintu 22.3 s kódovým jménem Zena. Podrobnosti v přehledu novinek a poznámkách k vydání. Vypíchnout lze, že nástroj Systémová hlášení (System Reports) získal mnoho nových funkcí a byl přejmenován na Informace o systému (System Information). Linux Mint 22.3 bude podporován do roku 2029.

    Ladislav Hagara | Komentářů: 2
    21.12. 01:55 | Nová verze

    GNU Project Debugger aneb GDB byl vydán ve verzi 17.1. Podrobný přehled novinek v souboru NEWS.

    Ladislav Hagara | Komentářů: 0
    19.12. 17:22 | IT novinky

    Josef Průša oznámil zveřejnění kompletních CAD souborů rámů tiskáren Prusa CORE One a CORE One L. Nejsou vydány pod obecnou veřejnou licenci GNU ani Creative Commons ale pod novou licencí OCL neboli Open Community License. Ta nepovoluje prodávat kompletní tiskárny či remixy založené na těchto zdrojích.

    Ladislav Hagara | Komentářů: 14
    Kdo vám letos nadělí dárek?
     (33%)
     (2%)
     (11%)
     (2%)
     (1%)
     (2%)
     (15%)
     (19%)
     (14%)
    Celkem 85 hlasů
     Komentářů: 18, poslední včera 15:30
    Rozcestník

    Programujeme v PERLu - II

    13. 1. 2004 | Jindřich Skupa | Programování | 11467×

    Je tu další díl, ve kterém si ukážeme cykly, podmínky, hledání, nahrazování a další šikovné funkce.

    Začneme tedy cykly, jako první uvedu cyklus for. For je cyklus řízený indexem pro předem známý počet provedení. Jeho syntaxe je zřejmá z následující ukázky a popisu :

    for ($i=1;$i<=10;$i++)
    {
        print "$i \n";
    }

    Syntaxe: for ([výraz];[výraz];[výraz]) blok_příkazů;

    (to, co je v hranatých závorkách, je nepovinné)

    blok_příkazů = obsah složených závorek, skupina příkazů

    Prvním parametrem je příkaz(výraz), který se provede jen jednou (většinou se používá pro nastavení počáteční hodnoty), následuje podmínka, která určuje počet opakování. A posledním parametrem je příkaz, který se vykoná při každem průbehu cyklu. Pokud neznáte Céčko, tak si asi kladete otázku, co dělá $i++;. Céčko zjednodušuje přiřazování - v PERLu je to stejné, viz tabulku.

    zápisje ekvivalentem
    $i++;$i=$i+1;
    $i--;$i=$i-1;
    $i+=10;$i=$i+10;
    $i-=10;$i=$i-10;
    $i=$i**3;$i=$i*$i*$i;

    (mocnina funkce, za ** se dává mocnitel)

    Dalším cyklem je while, to je cyklus s podmínkou na začátku, tento cyklus se opakuje, dokud je podmínka pravdivá.

    $i=-1;
    while ($i!=0)
    {
       $i=<STDIN>;
    }

    Syntaxe: while (výraz) blok_příkazů [continue blok_příkazů2]

    Tento cyklus bude probíhat, dokud nezadáte z klávesnice nulu. K cyklu while v PERLu existuje i jeho obrácený kamarád, který naopak probíhá, pokud není podmínka pravdivá:

    $i=-1;
    until ($i==0)
    {
       $i=<STDIN>;
    }

    Syntaxe: until (výraz) blok_příkazů [continue blok_příkazů2]

    Pro tvoření podmínek jsou nezbytné operátory, níže je krátký přehled.

    Operátory

    numerické

    • <, > - menší než, větší než
    • <=, >= - menší rovno, větší rovno
    • ==, != - rovno, nerovno

    řetězcové (porovnání)

    • lt, gt - delší než, kratší než
    • le, ge - delší nebo shodné, kratší nebo shodné
    • eq, ne - shodné, neshodné

    řetězcové (další)

    • . - složení řetězců
    • x - opakování řetězců
    • & - bitové AND
    • | - bitové OR
    • && - logické AND
    • || - logické OR

    Operátory použijeme i u podmíněného příkazu if a jeho opačného kamaráda unless:

    if ($i<10)
    {
       print "$i je mensí než deset";
    }
    elsif ($i==10)
    {
        print "$i je rovno deseti";
    }
    else
    {
        print "$i je vetší než deset";
    }

    Syntaxe: if (výraz) blok_příkazů1 [[eslif (výraz) blok_příkazů2] else blok_příkazů3]

    Pokud je splněna podmínka (výraz je pravdivý), pak se vykoná blok_příkazů1. Pokud nebyla podmínka splněna, vyhodnotí se další výraz. Když byl pravdivý, provede se blok_příkazů2, v případě, že ani jedna podmínka nebyla pravdivá, vykoná se blok_příkazů3.

    Unless pracuje podobně, jen postrádá část elsif a výraz vyhodnocuje opačně.

    Funkce pro hledání a nahrazování

    $retezec =~ s /vzorek/nový_text/ [i][m][s]

    Prohledá $retezec na shodu se vzorek (může být i regulární výraz), pokud něco nalezne, nahradí to nový_text. Pokud přidáte i, znamená to, že nezáleží na velikosti písmen, m bere $retezec jako více řádků, s jako jeden. Pokud nic nenahradil, tak vrací 0 - nepravda.

    $retezec =~ /vzorek/ [g][i][m][s]

    Hledá v $retezec zadaný vzorek (regulární výraz). Pokud použijete g, může se shoda použít jako interátor ve skalárním kontextu. V seznamovém kontextu vrací seznam skládající se z podvýrazů vyhovujících podle závorek ve vzorku.

    $retezec =~ tr /prohledávaný seznam/nahrazovací seznam/ [c][d]

    Nahrazuje všechny znaky prohledávaného seznamu na znaky z nahrazovacího seznamu. Volitelné modifikátory: c doplňuje prohledávaný seznam, d maže všechny znaky, které k sobě nemají ekvivalent v nahrazovacím seznamu.

    Matematické funkce

    • abs výraz; - vrací absolutní hodnotu výrazu
    • atan2 y,x; - vrací arctangens y/x v rozsahu od -pi do pi
    • cos výraz; - vrací kosinus výrazu (zadávaného v radiánech)
    • exp výraz; - vrací e umocněné na výraz
    • int výraz; - vrací celočíselnou část výrazu
    • log výraz; - vrací přirozený logaritmus (základ = e) výrazu
    • rand [výraz]; - vrací náhodné desetinné číslo z intervalu <0;výraz), pokud není výraz zadán, nahradí ho 1
    • sin výraz; - vrací kosinus výrazu (zadávaného v radiánech)
    • sqrt výraz; - vrací druhou odmocninu výrazu
    • srand výraz; - nastavuje výchozí hodnotu pro rand
    • time; - vrací UNIXový čas, počet sekund od 1.1.1970 8:8

    Konverzní funkce

    • chr výraz; - vrací znak o ASCII hodnotě výrazu
    • gmtime výraz; - konvertuje unixový čas na "lidský"; ve skalární souvislosti vrací čas v plném tvaru (den v týdnu, měsíc, den v měsíci, čas, rok), v seznamovém kontextu vrací tyto hodnoty rozložené (vteřina, minuta, hodina, den, msíc, rok, den v týdnu, den v roce, letní čas), měsíce začínají 0 - leden a dny v týdnu 0 - neděle
    • hex výraz; - převádí hexadecimální výraz na desítkovou hodnotu

    Podprogramy a moduly

    Pokud máme rozsáhlý kód, kde se některá část vícekrát opakuje čí je program mírně nepřehledný, tak použijeme podprogram (vlastní funkce).

    Ten se tvoří příkazem sub:

    sub název, [(prototyp)] blok_příkazů

    Sub se píše na začátek programu. Pokud není zadán blok příkazů, bude se jednat jen o dopřednou deklaraci, kterou budeme muset níže popsat (doplnit). Parametry podprogramu se předávají ve speciálním poli @_. Pro definici požadovaných parametrů lze použít definici pomocí prototypu.

    return [výraz]

    ukončuje podprogram s výrazem jako návratovou hodnotou.

    Podprogamy se následně volají dvěma možnými postupy. Buď název_podprogramu nebo &název_podprogramu.

    Moduly (balíčky tvořené vámi nebo někým jiným) se do programu natahují příkazem use na začátku skriptu:

    use jméno_modulu [[verze]seznam]

    To je tak ze základů vše potřebné, ale plánuji článek o CGI v PERLu.

           

    Hodnocení: 38 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    13.1.2004 11:19 Tomas
    Rozbalit Rozbalit vše operatory?
    Tenhle clenek mi prijde dost zvlastni, ... proc bylo nahodne vybrano zrovna techno nekolik operatoru ?? a je detailne popsany co znamena napr. $x++ (ktery zna vetsina lidi z ostatnich jazyku)... ale o operatorech specifickych pro perl ani zminka: resp. o nekterych ano: operatory x a ** ale napr. <=> cmp tu nevidim ... myslim ze lepsi by bylo uvest nejaky rozumnejsi prehled operatoru a ne vybirat jen nekolik (napr. casteji pouzivanych - i kdyz nevim, ze bych nekdy pouzil umocnovani, zato porovnavani pouzivam kazdou chvili pri nejakym specialnim trideni pole apod) a myslim ze vetsinu lidi kdyz kouka po nejakem prog. jazyku, ktery se nauci, tak je zajima prave to co je jine/lepsi ... T.
    13.1.2004 18:25 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše operatory?
    Přesně tak. Co je to třeba =~? V článku to spadne z čistého nebe.
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    13.1.2004 15:15 Roman Vasicek
    Rozbalit Rozbalit vše for - jenom neco?

    Proc u cyklu for neuvedete take variantu se seznamem?

      for (@seznam) { prikazy }

    Osobne daleko casteji pouzivam tuto konstrukci namisto te v clanku uvedene. Napriklad pro zpracovani vsech polozek hashe

      for (keys %nejaky_hash) {
        zpracuj_aktualni_klic
      }
    13.1.2004 20:22 social | skóre: 20 | Plzeň
    Rozbalit Rozbalit vše for - jenom neco?
    omlouvám se za neúplnost, neuvědomil jsem si praktičnost této konstrukce (lze to napsat složiteji, funguje to taky).
    13.1.2004 15:59 tyctor
    Rozbalit Rozbalit vše odflaknute?
    podla mna tento clanok autor jednoducho odflakol. hlavne ten zaver clanku mi pripada akoby sa ho uz nemohol dockat. od druheho dielu som cakal viac.
    14.1.2004 14:23 Martin Kysela | skóre: 18 | blog: The Martin Kysela's Blog | Praha
    Rozbalit Rozbalit vše mno...
    I snaha se ceni... Osobne doufam a verim, ze se autor nenecha odradit a bude zde uvedene komentare brat jako podnet k dalsimu zlepsovani. Verim, ze pristi casti serialu budou o neco propracovanejsi.

    // Martin Kysela
    // Martin Kysela
    20.1.2004 20:20 social | skóre: 20 | Plzeň
    Rozbalit Rozbalit vše mno...
    Uznavam ze tento clanek se mi podle reakci moc nepovedl. Jinak jsem se docela snazil, asi se mi bohuzel nepodarilo odhadnout naroky ctenaru.
    14.1.2004 16:21 venca
    Rozbalit Rozbalit vše tr
    Nejak jsem nepochopil, co dela ten tr (kterymi znaky nahrazuje). A co dela continue u cyklu while a until take neni popsano.
    20.2.2004 09:51 Roman Vasicek
    Rozbalit Rozbalit vše tr

    tr/src_list/dst_list/ nahrazuje jednotlive znaky ze src_list odpovidajicimi znaky z dst_list - prvni prvnim, druhy druhym, atd.

    10.2.2006 02:20 ldx
    Rozbalit Rozbalit vše Re: tr
    Namisto continue se pouziva next - pokracovat novym cyklem od zacatku, redo - pokracovat znovu aktualnim cyklem, last - ukoncit cyklus (obdoba break), continue - rozdeli cyklus na casti, ktere se zvlast vykonaji pri redo a next. Jinak pro kompletni manual k perlu (seznam funkci, knihoven atd.) viz http://perldoc.perl.org/....

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.