Split


Velmi užitečnou funkcí v perlu je funkce split, která rozděluje řetězec na jednotlivé části a ukládá jednotlivé části do prvků pole. Tato funkce používá regulární výraz a implicitně pracuje s proměnnou $_.

Příklad použití funkce split:

$info = "Jana:Michal:Ale:14, dlouha cesta";
@personal = split(/:/, $info);
Výsledek funkce split je pole @personal s obsahem
@personal = ("Jana", "Michal", "Ale", "14, dlouha cesta");
Pokud jsou informace uloženy v proměnné $_ použijeme příkaz
@personal = split(/:/);

Pokud jsou pole oddělená vícenásobným znakem :, můžeme ve funkci split použít RE. Příklad:

$_ = "prvni:dalsi::druhy prvek:::posledni polozka";
@personal = split(/:+/);
výsledek je
@personal = ("prvni", "dalsi"
             "druhy prvek", "posledni polozka");
Ale:
$_ = "prvni:dalsi::druhy prvek:::posledni polozka";
@personal = split(/:/);
dává výsledek
@personal = ("prvni", "dalsi" "",
             "druhy prvek", "", "", "posledni polozka");

Slovo může být rozděleno na znaky, věta na slova a odstavec na věty:

@chars = split(//, $word);
@words = split(/ /, $sentence);
@sentences = split(/\./, $paragraph);
V prvním případě je prázdný řetězec porovnáván s prvkem mezi znaky, proto pole @chars obsahuje jednotlivé znaky tj. řetězce o délce 1.


Cvičení

Upravte poslední verzi programu tak, aby v souboru ceskywww.txt vyhledal řádky obsahující řetězec "http:" např.(http://web.cvut.cz/ascii/cc/icsc/software). Na těchto řádcích pak rozdělte řetězec následující bezprostředně za http: na jednotlivé části, oddělovacím znakem je lomítko. Vypište řetězec za // do dalšího / tj. jméno počítače. Předpokládejte, že řetězec "http:" se může vyskytnout na řádku několikrát.
jmeno pocitace = web.cvut.cz

Jedno z možných řešení.


Další kapitola | Předchozí kapitola kapitola | Obsah