Moduł List::MoreUtils
Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowaSpis treści
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
[c] Piotr Arłukowicz, materiały z tej strony udostępnione są na licencji GNU.