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í
×
    včera 22:22 | Komunita

    Upozornění pro uživatele Asahi Linuxu: Neaktualizujte macOS na verzi 27 Golden Gate! Apple změnil detekci spouštěcích oddílů. Po aktualizaci oddíl s Asahi Linuxem nevidí. Snad je to jenom chyba.

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

    Na webu konference Den IPv6, která se konala 4. června v Národní technické knihovně v pražských Dejvicích, jsou nyní k dispozici všechny prezentace (v PDF) a jejich videozáznamy. Organizátory konference byly i letos sdružení CESNET, CZ.NIC a NIX.CZ.

    VSladek | Komentářů: 0
    včera 13:11 | Nová verze

    Byla vydána nová verze 9.1.0 správce sbírky fotografií digiKam (Wikipedie). Přehled novinek i s náhledy v oficiálním oznámení (NEWS). Vypíchnout lze vylepšené vyhledávání nebo podporu Pixel Motion Photos. Nejnovější digiKam je ke stažení také jako balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo ke spuštění a spustit.

    Ladislav Hagara | Komentářů: 0
    včera 11:44 | Pozvánky

    Přihlaste svou přednášku na další ročník konference LinuxDays, který proběhne 3. a 4. října na FIT ČVUT v pražských Dejvicích. Příjem témat poběží do konce prázdnin, pak proběhne veřejné hlasování a následně sestavení programu.

    Petr Krčmář | Komentářů: 2
    včera 04:44 | Nová verze

    Byla vydána nová verze 2.4.68 svobodného multiplatformního webového serveru Apache (httpd). Řešeno je mimo jiné 13 zranitelností.

    Ladislav Hagara | Komentářů: 2
    8.6. 22:44 | IT novinky

    Apple na své vývojářské konferenci WWDC26 (Worldwide Developers Conference, keynote) představil řadu novinek. Vypíchnout lze novou generaci Apple Intelligence a zbrusu novou Siri, která dostala název Siri AI. Kvůli Aktu o digitálních trzích (DMA) však funkce Siri AI nebudou v systémech iOS 27 a iPadOS 27 k dispozici uživatelům v Evropské unii.

    Ladislav Hagara | Komentářů: 0
    8.6. 22:22 | Nová verze

    Byla vydána nová verze 1.18.0 distribučního frameworku Flatpak (Wikipedie), tj. technologie umožňující distribuovat aplikace v podobě jednoho instalačního souboru na různé linuxové distribuce a jejich různá vydání. Přehled novinek na GitHubu. Vypíchnout lze podporu rozhraní /dev/kfd pro výpočty na kartách AMD (AMDKFD).

    Ladislav Hagara | Komentářů: 0
    8.6. 20:44 | Nová verze

    aMule (Wikipedie), tj. multiplatformní klient pro peer-to-peer sdílení souborů pro sítě eD2k and Kademlia, byl po více než pěti letech od vydání poslední verze 2.3.3, vydán v nové major verzi 3.0.0 (GitHub). S novou webovou stránkou a dokumentací.

    Ladislav Hagara | Komentářů: 5
    8.6. 12:55 | IT novinky

    Byly vyhlášeni vítězové a zveřejněny vítězné zdrojové kódy (YouTube, GitHub) již 29. ročníku soutěže International Obfuscated C Code Contest (IOCCC), tj. soutěže o nejnepřehlednější (nejobfuskovanější) zdrojový kód v jazyce C.

    Ladislav Hagara | Komentářů: 0
    8.6. 12:44 | IT novinky

    Evropská komise předložila evropský balíček pro technologickou suverenitu, tedy soubor opatření, která mají posílit kapacity EU v oblasti polovodičů, umělé inteligence, cloudu a open source. To Evropě pomůže stát se lídrem v oblasti umělé inteligence, posílit její digitální autonomii a vytvářet podmínky pro udržitelnější digitální budoucnost.

    Ladislav Hagara | Komentářů: 16
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (8%)
     (2%)
     (15%)
     (31%)
     (3%)
     (6%)
     (3%)
     (15%)
     (26%)
    Celkem 1856 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


    Programujeme v PERLu - II

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

    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.