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 12:11 | Zajímavý článek

    Vědci Biotechnologické společnosti Cortical Labs vytvořili biopočítač nazvaný CL1, který využívá živé lidské mozkové buňky vypěstované z kmenových buněk na čipu. Po úspěchu se hrou PONG se ho nyní snaží naučit hrát DOOM. Neurony přijímají signály podle toho, co se ve hře děje, a jejich reakce jsou převáděny na akce jako pohyb nebo střelba. V tuto chvíli systém hraje velmi špatně, ale dokáže reagovat, trochu se učit a v reálném čase se hrou

    … více »
    karkar | Komentářů: 0
    dnes 01:55 | Nová verze Ladislav Hagara | Komentářů: 0
    včera 21:33 | Nová verze

    Ben Sturmfels oznámil vydání MediaGoblinu 0.15.0. Přehled novinek v poznámkách k vydání. MediaGoblin (Wikipedie) je svobodná multimediální publikační platforma a decentralizovaná alternativa ke službám jako Flickr, YouTube, SoundCloud atd. Ukázka například na LibrePlanet.

    Ladislav Hagara | Komentářů: 0
    včera 15:44 | Zajímavý software

    TerminalPhone (png) je skript v Bashi pro push-to-talk hlasovou a textovou komunikaci přes Tor využívající .onion adresy.

    Ladislav Hagara | Komentářů: 6
    včera 12:22 | IT novinky

    Před dvěma lety zavedli operátoři ochranu proti podvrženým hovorům, kdy volající falšuje čísla anebo se vydává za někoho jiného. Nyní v roce 2026 blokují operátoři díky nasazeným technologiím v průměru 3 miliony pokusů o podvodný hovor měsíčně (tzn., že k propojení na zákazníka vůbec nedojde). Ochrana před tzv. spoofingem je pro zákazníky a zákaznice všech tří operátorů zdarma, ať už jde o mobilní čísla nebo pevné linky.

    Ladislav Hagara | Komentářů: 8
    včera 03:44 | Komunita

    Společnost Meta (Facebook) předává React, React Native a související projekty jako JSX nadaci React Foundation patřící pod Linux Foundation. Zakládajícími členy React Foundation jsou Amazon, Callstack, Expo, Huawei, Meta, Microsoft, Software Mansion a Vercel.

    Ladislav Hagara | Komentářů: 3
    včera 01:22 | IT novinky

    Samsung na akci Galaxy Unpacked February 2026 (YouTube) představil své nové telefony Galaxy S26, S26+ a S26 Ultra a sluchátka Galaxy Buds4 a Buds4 Pro. Telefon Galaxy S26 Ultra má nový typ displeje (Privacy Display) chránící obsah na obrazovce před zvědavými pohledy (YouTube).

    Ladislav Hagara | Komentářů: 7
    včera 00:22 | Nová verze

    Byla vydána grafická knihovna Mesa 26.0.1 s podporou API OpenGL 4.6 a Vulkan 1.4. Je to první stabilní verze po 26.0.0, kde se novinky týkají mj. výkonu ray tracingu na GPU AMD a HoneyKrisp, implementace API Vulkan pro macOS.

    |🇵🇸 | Komentářů: 0
    25.2. 20:22 | Nová verze

    Byla vydána nová verze 4.6 multiplatformního integrovaného vývojového prostředí (IDE) pro rychlý vývoj aplikaci (RAD) ve Free Pascalu Lazarus (Wikipedie). Využíván je Free Pascal Compiler (FPC) 3.2.2.

    Ladislav Hagara | Komentářů: 0
    25.2. 18:00 | Nová verze

    Byla vydána nová verze 3.23.0 FreeRDP, tj. svobodné implementace protokolu RDP (Remote Desktop Protocol). Opravuje 11 bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (17%)
     (6%)
     (0%)
     (11%)
     (27%)
     (2%)
     (5%)
     (2%)
     (13%)
     (26%)
    Celkem 967 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník

    Programujeme v PERLu - II

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

    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.