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 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
    včera 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ářů: 10
    19.12. 17:00 | Komunita

    Nový CEO Mozilla Corporation Anthony Enzor-DeMeo tento týden prohlásil, že by se Firefox měl vyvinout v moderní AI prohlížeč. Po bouřlivých diskusích na redditu ujistil, že v nastavení Firefoxu bude existovat volba pro zakázání všech AI funkcí.

    Ladislav Hagara | Komentářů: 0
    19.12. 10:11 | IT novinky

    V pořadí šestou knihou autora Martina Malého, která vychází v Edici CZ.NIC, správce české národní domény, je titul Kity, bity, neurony. Kniha s podtitulem Moderní technologie pro hobby elektroniku přináší ucelený pohled na svět současných technologií a jejich praktické využití v domácích elektronických projektech. Tento knižní průvodce je ideální pro každého, kdo se chce podívat na současné trendy v oblasti hobby elektroniky, od

    … více »
    Ladislav Hagara | Komentářů: 7
    19.12. 03:11 | Komunita

    Linux Foundation zveřejnila Výroční zprávu za rok 2025 (pdf). Příjmy Linux Foundation byly 311 miliónů dolarů. Výdaje 285 miliónů dolarů. Na podporu linuxového jádra (Linux Kernel Project) šlo 8,4 miliónu dolarů. Linux Foundation podporuje téměř 1 500 open source projektů.

    Ladislav Hagara | Komentářů: 0
    19.12. 02:11 | Zajímavý článek

    Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.12.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.

    Ladislav Hagara | Komentářů: 0
    19.12. 02:00 | Nová verze

    OpenZFS (Wikipedie), tj. implementace souborového systému ZFS pro Linux a FreeBSD, byl vydán ve verzi 2.4.0.

    Ladislav Hagara | Komentářů: 0
    19.12. 01:00 | IT novinky

    Kriminalisté z NCTEKK společně s českými i zahraničními kolegy objasnili mimořádně rozsáhlou trestnou činnost z oblasti kybernetické kriminality. V rámci operací OCTOPUS a CONNECT ukončili činnost čtyř call center na Ukrajině. V prvním případě se jednalo o podvodné investice, v případě druhém o podvodné telefonáty, při kterých se zločinci vydávali za policisty a pod legendou napadeného bankovního účtu okrádali své oběti o vysoké finanční částky.

    Ladislav Hagara | Komentářů: 9
    18.12. 14:44 | IT novinky

    Na lepší pokrytí mobilním signálem a dostupnější mobilní internet se mohou těšit cestující v Pendolinech, railjetech a InterPanterech Českých drah. Konsorcium firem ČD - Telematika a.s. a Kontron Transportation s.r.o. dokončilo instalaci 5G opakovačů mobilního signálu do jednotek Pendolino a InterPanter. Tento krok navazuje na zavedení této technologie v jednotkách Railjet z letošního jara.

    Ladislav Hagara | Komentářů: 7
    Kdo vám letos nadělí dárek?
     (26%)
     (2%)
     (13%)
     (2%)
     (2%)
     (2%)
     (11%)
     (26%)
     (17%)
    Celkem 47 hlasů
     Komentářů: 15, poslední dnes 09:50
    Rozcestník

    Programujeme v PERLu - II

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

    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.