Funkce pro práci s poli
V jazyce Perl je předdefinovaná celá řada funkcí pro práci s seznamy a poli. Funkcí "push" je možné na konec zadaného pole přidat seznam zadaných prvků. Pomocí funkce "unshift" je možné provádět to samé, ale prvky budou zařazeny na začátek pole. Délka pole je zvýšena o daný počet prvků a vrácena jako návratová hodnota těchto funkcí. V následujícím příkladu je uvedeno použití funkcí "push" a "unshift".
@pole = (1, 3, 5);
Print push @pole, 10;
// Vytiskne 4, pole nyní obsahuje prvky 1, 3, 5, 10
Print unshift @pole, 100;
//Vytiskne 5, pole nyní obsahuje prvky 100, 1, 3, 5, 10
Pro odebrání jednoho prvku z pole slouží funkce "pop", která odebere a vrátí prvek z konce pole. Oproti tomu funkce "shift" odebere a vrátí prve ze začátku pole. V obou případech se zkrátí délka pole o jeden prvek.
@pole = (1, 3, 5, 7, 9, 11);
Print pop @pole;
// Vytiskne 11, pole nyní obsahuje prvky 1, 3, 5, 7, 9
Print shift @pole;
//Vytiskne 1, pole nyní obsahuje prvky 3, 5, 7, 9
Díky existenci těchto funkcí a vlastností polí v Perlu, lze bez větších problému implementovat datové struktury fronta a zásobník. Dvojice funkcí "push" a "pop" nebo "unshift" a "shift" slouží pro práci s polem jako se zásobníkem, dvojice funkcí "push" a "shift" nebo "unshift" a "pop" umožňují praci s polem jako s frontou.
Funkce "splice" pracuje s více prvky a ty se nutně nemusejí nacházet pouze na začátku nebo na konci pole. Funkce ze zadaného pole vezme zadaný počet prvků na zadaných pozicích a nahradí je zadaným seznamem hodnot. Pomocí funkce "splice" lze tedy s polem pracovat jako s lineárně zřetězeným seznamem. V následujícím kódu je uveden jednoduchý příklad, který ilustruje použití funkce "splice".
@pole = (1, 2, 3, 4, 5);
Splice @pole, 2, 2, 'a', 'b', 'c' ;
// Z pole odebere prvky dva prvky od indexu 2 (3 a 4)
// a vloží hodnoty 'a', 'b', 'c'
// nové pole pote bude obsahovat : 1, 2, 'a', 'b', 'c', 5
Splice @pole, 3, 1;
// Z pole odebere jeden prvek od indexu 3 ( 'b' )
// ničím není nahrazen,
// nové pole pote bude obsahovat : 1, 2, 'a', 'c', 5
A to by bylo pro dnešek všechno. V dalším díle se podíváme na další datový typ - HASH (asociativní pole). V případě jakýchkoliv dotazů mě kontaktujte na email: habrman@banan.cz.
Autor: Robert Habrman