Moduł List::MoreUtils

Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowa

Co to jest

Moduł ten zawiera fukcje operujące na listach. Jest on uzupełnieniem funkcji których brakuje w List::Util.

Funkcje

any BLOCK LIST
Zwraca prawdę, jeżeli chociaż jeden element w LIST spełnia kryterium dane w BLOCK. Funkcja ustawia w zmiennej $_ każdy element listy. Zwraca false jeżeli żaden nie spełnia kryteriów oraz undef jeżeli lista jest pusta.
all BLOCK LIST
Zwraca prawdę, jeżeli wszystkie elementy LIST spełniają kryteria dane w BLOCK. Funkcja ustawia w zmiennej $_ każdy element listy. Zwraca false jeżeli żaden nie spełnia kryteriów oraz undef jeżeli lista jest pusta.
none BLOCK LIST
Logiczna negacja any. Zwraca prawdę, jeżeli żaden element z LIST nie spełnia kryterium danego przez BLOCK. Funkcja ustawia w zmiennej $_ każdy element listy. Zwraca false jeżeli żaden nie spełnia kryteriów oraz undef jeżeli lista jest pusta.
notall BLOCK LIST
Logiczna negacja all. Zwraca prawdę, jeżeli nie wszystkie elementy w liście spełniają kryteria dane w BLOCK. Funkcja ustawia w zmiennej $_ każdy element listy. Zwraca false jeżeli żaden nie spełnia kryteriów oraz undef jeżeli lista jest pusta.
true BLOCK LIST
Zwraca liczbę elementów LIST, dla których BLOCK zwraca true. Funkcja ustawia w zmiennej $_ każdy element listy.
false BLOCK LIST
Zwraca liczbę elementów LIST, dla których BLOCK zwraca false. Funkcja ustawia w zmiennej $_ każdy element listy.
firstidx BLOCK LIST
first_index BLOCK LIST
Zwraca index pierwszego elementu z LIST, który spełnia kryterium dane w BLOCK. Funkcja ustawia w zmiennej $_ każdy element listy. Zwraca -1, jeżeli taki element nie został znaleziony.
lastidx BLOCK LIST
last_index BLOCK LIST
Zwraca index ostatniego elementu z LIST, który spełnia kryterium dane w BLOCK. Funkcja ustawia w zmiennej $_ każdy element listy. Zwraca -1, jeżeli taki element nie został znaleziony.
index_after BLOCK VALUE LIST
Wstawia VALUE po pierwszym elemencie w LIST, który spełnia kryterium w BLOCK. Funkcja ustawia w zmiennej $_ każdy element listy. my @list = qw/This is a list/; insert_after { $_ eq "a" } "longer" => @list; print "@list"; __END__ This is a longer list
insert_after_string STRING VALUE LIST
Wstawia VALUE po pierwszym elemencie w LIST, który jest równy STRING. my @list = qw/This is a list/; insert_after_string "a", "longer" => @list; print "@list"; __END__ This is a longer list
apply BLOCK LIST
Stosuje BLOCK do każdego elementu LIST i zwraca listę wartości po zastosowaniu BLOCK. W kontekście skalarnym ostatni element listy jest zwrócony. Funkcja ta jest podobna do map, lecz nie modyfikuje elementów listy wejściowej. my @list = (1 .. 4); my @mult = apply { $_ *= 2 } @list; print "\@list = @list\n"; print "\@mult = @mult\n"; __END__ @list = 1 2 3 4 @mult = 2 4 6 8
after BLOCK LIST
Zwraca listę wartości z LIST po elemencie (nie włączając go), dla którego BLOCK zwrócił true. Funkcja ustawia w zmiennej $_ każdy element listy.
after_incl BLOCK LIST
Podobnie jak after ale włącza także element dla którego BLOCK zwrócił true.
before BLOCK LIST
Zwraca listę wartości z LIST do elementu (nie włącza go) dla którego BLOCK zwrócił wartość true.
before_incl BLOCK LIST
Podobnie jak before ale włącza także element dla którego BLOCK zwrócił true.
indexes BLOCK LIST
Ewaluuje BLOCK dla każdego elementu LIST ( w $_ znajduje się dany element ) i zwraca listę indeksów tych elementów, dla których BLOCK zwrócił true.
firstval BLOCK LIST
first_value BLOCK LIST
Zwraca pierwszy element, dla którego BLOCK zwrócił true. Każdy element jest ustawiany w zmiennej $_. Funkcja zwraca undef, jeżeli takie element nie został znaleźony.
lastval BLOCK LIST
last_value BLOCK LIST
Zwraca ostatni element, dla którego BLOCK zwrócił true. Każdy element jest ustawiany w zmiennej $_. Funkcja zwraca undef, jeżeli takie element nie został znaleźony.
pairwise BLOCK ARRAY1 ARRAY2
Ewaluuje BLOCK dla każdej pary elementów z ARRAY1 i ARRAY2 i zwraca nową listę zawierającą elementy zwrócone przez BLOCK. Te dwa elementy są ustawiane na $a i $b. Zmiana tych elementów zmodyfikuje także tablice wejściowe. @a = (1 .. 5); @b = (11 .. 15); @x = pairwise { $a + $b } @a, @b; # returns 12, 14, 16, 18, 20 # mesh with pairwise @a = qw/a b c/; @b = qw/1 2 3/; @x = pairwise { ($a, $b) } @a, @b; # returns a, 1, b, 2, c, 3
each_array ARRAY1 ARRAY2 ...
Tworzy iterator, który zwraca elementy list ARRAY1 ARRAY2 ... ARRAYn. Jeżeli pierwszy raz jest wywołany, zwraca pierwszy element każdej tablicy. Przy następnym wywołaniu drugi. I tak aż wszystkie elementy zostaną zwrócone. Jest to użyteczne, gdy przechodzimy w pętli po więcej niż jednej tablicy. Iterator zwraca pustą listę, gdy dotrze do końca wszystkich tablic. Jeżeli iterator dostanie jako argument index, wtedy zwróci index ostatniego zwróconego elementu jako skalar. my $ea = each_array(@a, @b, @c); while ( my ($a, $b, $c) = $ea->() ) { .... }
each_arrayref LIST
Podobnie jak each_array, lecz argumentami są referencje do tablic.
natatime BLOCK LIST
Tworzy iterator, do przechodzenia po części tablicy naraz. Przykład lepiej wszystko wyjaśni. my @x = ('a' .. 'g'); my $it = natatime 3, @x; while (my @vals = $it->()) { print "@vals\n"; } Wypisze: a b c d e f g
mesh ARRAY1 ARRAY2 [ ARRAY3 ... ]
zip ARRAY1 ARRAY2 [ ARRAY3 ... ]
Zwraca listę składającą się z pierwszego elementu każdej tablicy, później z drugiego, trzeciego i.t.d. @x = qw/a b c d/; @y = qw/1 2 3 4/; @z = mesh @x, @y; # returns a, 1, b, 2, c, 3, d, 4 @a = ('x'); @b = ('1', '2'); @c = qw/zip zap zot/; @d = mesh @a, @b, @c; # x, 1, zip, undef, 2, zap, undef, undef, zot
uniq LIST
Zwraca nową listę po usunięciu duplikatów. Porządek w nowej liście jest taki sam jak w liście wejściowej. W kontekście skalarnym zwraca liczbę elementów listy. my @x = uniq 1, 1, 2, 2, 3, 5, 3, 4; # returns 1 2 3 5 4 my $x = uniq 1, 1, 2, 2, 3, 5, 3, 4; # returns 5
minmax LIST
Wylicza minimum i maksimum z listy i zwraca je jako listę dwuelementową, gdzie pierwszy element to minimum, a drugi element to maksimum. Zwraca pustą listę, jeżeli była pusta.
part BLOCK LIST
Dzieli LIST bazując na wartości zwróconej przez BLOCK, która wskazuje do której części dana wartość ma należeć. Zwraca listę części. Każda część jest referencją do tablicy. Nie ustawione partycje będą ustawione na undef. my $i = 0; my @part = part { $i++ % 2 } 1 .. 8; # returns [1, 3, 5, 7], [2, 4, 6, 8] my @part = part { 2 } 1 .. 10; # returns undef, undef, [ 1 .. 10 ] my @part = part { -1 } 1 .. 10; __END__ Modification of non-creatable array value attempted, subscript -1 ... my @idx = (0, 1, -1); my $i = 0; my @part = part { $idx[$++ % 3] } 1 .. 8; # [1, 4, 7], [2, 3, 5, 6, 8]

Dodatkowe informacje

Pozostałe informacje znajdują się w na stronie http://search.cpan.org/~vparseval/List-MoreUtils-0.22/lib/List/MoreUtils.pm.

Kontakt i informacje o autorze opracowania

Autor: K.M

Uniwersytet Gdański - Instytut Informatyki - Strona domowa - Perl - Wyklady
[c] Piotr Arłukowicz, materiały z tej strony udostępnione są na licencji GNU.