|
||||||||||||||||||||||||||||||||||||||||||||||||
Menu
Distributions (131)
Software (10844)
|
Perl (14) - Další nástroje pro seznamyKonečně se podíváme na cyklus foreach, což je jedna z nejpoužívanějších konstrukcí vůbec. Dále je v plánu několik nových funkcí a vstup v souvislosti se seznamy.
Procházení pole - cyklus foreachforeach je cyklus, který se používá v souvislosti s poli, protože umožňuje jejich snadné procházení. Název se skládá ze slov for a each, což už mnoho napovídá o jeho významu. Standardně se foreach zkracuje na for.
@ptaci = ("kos", "vrabec", "papoušek", "datel");
for $klic (@ptaci){
print $klic, "\n";
}
Do proměnné $klic se každou iteraci cyklu přiřadí jedna hodnota pole. Tedy postupně hodnoty $ptaci[0], $ptaci[1], $ptaci[2], $ptaci[3]. Toho užijeme pro výpis dat z pole:
$ perl foreach.pl
kos
vrabec
papoušek
datel
$
Chceme-li vypisovat hashe, bude se hodit funkce keys, která vrací pole klíčů hashe. Pomocí klíčů totiž lze získat i hodnoty.
Doufám, že jsem nějakého opeřence výběrem jídla neurazil. Každopádně odtud vidíme, že to skutečně funguje:
$ perl foreach.pl
slunečnice je potrava pro kos
slunečnice je potrava pro vrabec
proso je potrava pro papoušek
hmyz je potrava pro datel
$
Cyklus by měl fungovat stejně i v případě, že přepíšeme for na foreach. for lze napsat i za příkaz
print "$_, " foreach (1, 2, 3, 4, 5);
print "$_, " for (1, 2, 3, 4, 5);
případně za blok.
@p = (1, 2, 3, 4, 5);
do {$_ += 10;
print "$_, ";
} for @p;
Proměnná $_ zatím v tomto seriálu nebyla blíže rozebírána. Bude tak učiněno v příštím díle. Jde o implicitní proměnnou, do které se hodnoty pole postupně přiřazují. chomp po složkáchUvedeme-li jako parametr funkce chomp pole, je to jako byste použili funkci chomp na všechny skaláry, které pole obsahuje. Je-li parametrem hash, aplikuje se chomp pouze na hodnoty - tedy klíče zůstanou nezměněny. Odstraňování hodnot z pole - funkce pop a shiftJak z názvu vyplývá, pop odstraňuje prvek pole z konce seznamu (ten s nejvyšším indexem) a shift ze začátku. Obě funkce rovněž odstraněnou hodnotu vracejí.
Přidávání hodnot do pole - funkce push a unshiftpush přidává prvek na konec seznamu, unshift na začátek. Obě funkce vrací jako návratovou hodnotou hodnotu přidaného prvku.
Nahrazování hodnot v poli - funkce spliceOdstraňuje, přidává a nahrazuje prvky v poli. Má 4 parametry.
Mějme pole čísel:
Odstraňme prvky 8 - 11:
Jak vidíme, vrací funkce jako návratovou hodnotu pole odstraněných prvků:
Samotné pole @p obsahuje:
Odstraňme všechny prvky od prvku s hodnotou 13:
Prvky s indexy 1 a 2 nahradíme jinými. Lze přidat jiný počet prvků, než kolik jich je odebráno. Též je možné zadat jako třetí parametr 0 - v tom případě se budou prvky jen přidávat.
A nakonec smažme všechny prvky:
Pole a vstupKdyž jsme načítali vstup ve skalárním kontextu, vždy jsme získali jen jeden řádek ze zdroje dat. Přiřazujeme-li zdroj dat do pole, vytvoří se tolik prvků, kolik mají data řádků. Hodnotami prvků jsou právě řádky. Modifikujme náš příklad s českými králi ze 7. dílu tak, aby se vypsali všichni, kteří jsou v souboru uloženi. Připomeňme si datový soubor kralove:
Jen zaměníme skalární proměnnou za pole:
A dostaneme všechny tři řádky.
Rozdělení řetězce do prvků pole - funkce splitsplit rozdělí řetězec na několik podřetězců a ty uloží do seznamu. Funkce hledá v řetězci výskyty oddělovače (první parametr). Oddělovačem je regulární výraz, ale zatím ho chápejme jako obyčejný řetězec, který je uvozen lomítky. Výskyty oddělovačů určují právě začátek a konec výsledných podřetězců. Oddělovač se ale v podřetězcích neobjevuje. Druhým parametrem je samotný řetězec. Lze uvést i třetí parametr, který určuje, kolik nejvíce může podřetězců být. Po vyhledání daného počtu oddělovačů je posledním podřetězcem celý text za posledním výskytem, přičemž nezáleží, zda tam nějaký výskyt ještě není.
Oddělovačem byla mezera - tímto způsobem získáme (ve většině případů) jednotlivá slova. Ve výsledných podřetězcích již mezery nebudou.
Na posledním řádku byl text rozdělen na 4 podřetězce a ty jsou následně přiřazeny do pole. Každý podřetězec bude hodnotou prvku. Pokračujme ale v kódu:
Každou iterací bylo vytisknuto jedno slovo věty a za ním čárka. Při páté iteraci se vytiskl zbytek textu. Ještě jednou dnes dostanou slovo králové. Uděláme z řádků věty tak, že před období vlády přidáme text. Předpokládejme, že období je vždy za poslední mezerou v řádku.
Sám algoritmus funguje tak, že rozdělíme řádek mezerami, poslední prvek (období) přesuneme do jiné proměnné a můžeme tisknout.
Spojování prvků do řetězce - funkce joinZatímco split řetězce rozděluje, join je naopak spojuje. Jeho použití velmi podobné jako u split. Prvním parametrem je spojovač, který bude vložen do výsledného řetězce mezi každé dvě hodnoty seznamu.
|
Search Software
Search Google
|
||||||||||||||||||||||||||||||||||||||||||||||
©Pavel Kysilka - 2003-2024 | maillinuxsoft.cz | Design: www.megadesign.cz |