From 6b8493623b2ff833298815dc436338a99cc62bdd8214aa867df43d5e6b57fe24 Mon Sep 17 00:00:00 2001 From: OBS User buildservice-autocommit Date: Fri, 18 Mar 2011 09:05:36 +0000 Subject: [PATCH 1/5] Updating link to change in openSUSE:Factory/perl-List-MoreUtils revision 14.0 OBS-URL: https://build.opensuse.org/package/show/devel:languages:perl/perl-List-MoreUtils?expand=0&rev=54e846a2e13a2ddd7f77025bbe542946 --- perl-List-MoreUtils.changes | 2 +- perl-List-MoreUtils.spec | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/perl-List-MoreUtils.changes b/perl-List-MoreUtils.changes index fe139a9..e2f07ff 100644 --- a/perl-List-MoreUtils.changes +++ b/perl-List-MoreUtils.changes @@ -2,7 +2,7 @@ Thu Mar 17 08:24:00 UTC 2011 - cfarrell@novell.com - license update: GPL+ or Artistic - See README and MoreUtils.pm - "same terms as PerlÂ" expands to GPL+ or Artistic + See README and MoreUtils.pm - "same terms as Perl" expands to GPL+ or Artistic ------------------------------------------------------------------- Wed Dec 1 13:33:15 UTC 2010 - coolo@novell.com diff --git a/perl-List-MoreUtils.spec b/perl-List-MoreUtils.spec index 8d392e3..4db8efc 100644 --- a/perl-List-MoreUtils.spec +++ b/perl-List-MoreUtils.spec @@ -1,7 +1,7 @@ # -# spec file for package perl-List-MoreUtils (Version 0.22) +# spec file for package perl-List-MoreUtils # -# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -22,7 +22,7 @@ Name: perl-List-MoreUtils %define cpan_name %( echo %{name} | %{__sed} -e 's,perl-,,' ) Summary: Provide the stuff missing in List::Util Version: 0.22 -Release: 80 +Release: 85 # License: GPL+ or Artistic Group: Development/Libraries/Perl From 075d670998ada4dc094a15d14312585c91c6cf919b724b439db855b7040f60f1 Mon Sep 17 00:00:00 2001 From: Stephan Kulow Date: Thu, 31 Mar 2011 12:42:25 +0000 Subject: [PATCH 2/5] - initial package 0.30 * created by cpanspec 1.78.03 - update to 0.30, see Changes for details (a lot) Mar 17 08:24:00 UTC 2011 - cfarrell@novell.com OBS-URL: https://build.opensuse.org/package/show/devel:languages:perl/perl-List-MoreUtils?expand=0&rev=13 --- List-MoreUtils-0.22.tar.gz | 3 - List-MoreUtils-0.30.tar.gz | 3 + perl-List-MoreUtils.changes | 13 +- perl-List-MoreUtils.spec | 360 +++++++++++++++++++++++++++++++++--- 4 files changed, 351 insertions(+), 28 deletions(-) delete mode 100644 List-MoreUtils-0.22.tar.gz create mode 100644 List-MoreUtils-0.30.tar.gz diff --git a/List-MoreUtils-0.22.tar.gz b/List-MoreUtils-0.22.tar.gz deleted file mode 100644 index 55bd0f8..0000000 --- a/List-MoreUtils-0.22.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b4948b26851d9d9ac611eb487ecb92815dc3c5ee64e414bc67211b48590f62b7 -size 22570 diff --git a/List-MoreUtils-0.30.tar.gz b/List-MoreUtils-0.30.tar.gz new file mode 100644 index 0000000..d5aad9d --- /dev/null +++ b/List-MoreUtils-0.30.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d401b6e08681dcc782b04b7a6e128fff043b9a06ef12fee0931800a006132f0 +size 36659 diff --git a/perl-List-MoreUtils.changes b/perl-List-MoreUtils.changes index e2f07ff..675c2b9 100644 --- a/perl-List-MoreUtils.changes +++ b/perl-List-MoreUtils.changes @@ -1,5 +1,16 @@ ------------------------------------------------------------------- -Thu Mar 17 08:24:00 UTC 2011 - cfarrell@novell.com +Thu Mar 31 12:41:18 UTC 2011 - coolo@novell.com + +- initial package 0.30 + * created by cpanspec 1.78.03 + +------------------------------------------------------------------- +Thu Mar 31 12:40:18 UTC 2011 - coolo@novell.com + +- update to 0.30, see Changes for details (a lot) + +------------------------------------------------------------------- + Mar 17 08:24:00 UTC 2011 - cfarrell@novell.com - license update: GPL+ or Artistic See README and MoreUtils.pm - "same terms as Perl" expands to GPL+ or Artistic diff --git a/perl-List-MoreUtils.spec b/perl-List-MoreUtils.spec index 4db8efc..a688b99 100644 --- a/perl-List-MoreUtils.spec +++ b/perl-List-MoreUtils.spec @@ -1,7 +1,7 @@ # -# spec file for package perl-List-MoreUtils +# spec file for package perl-List-MoreUtils (Version 0.30) # -# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -15,38 +15,350 @@ # Please submit bugfixes or comments via http://bugs.opensuse.org/ # -# norootforbuild - - Name: perl-List-MoreUtils -%define cpan_name %( echo %{name} | %{__sed} -e 's,perl-,,' ) -Summary: Provide the stuff missing in List::Util -Version: 0.22 -Release: 85 -# +Version: 0.30 +Release: 1 License: GPL+ or Artistic +%define cpan_name List-MoreUtils +Summary: Provide the stuff missing in List::Util +Url: http://search.cpan.org/dist/List-MoreUtils/ Group: Development/Libraries/Perl -# -Url: http://search.cpan.org/perldoc?List::MoreUtils -Source: http://search.cpan.org/CPAN/authors/id/V/VP/VPARSEVAL/List-MoreUtils-0.22.tar.gz -# +#Source: http://www.cpan.org/authors/id/A/AD/ADAMK/List-MoreUtils-%{version}.tar.gz +Source: %{cpan_name}-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-build -%{perl_requires} BuildRequires: perl BuildRequires: perl-macros +%{perl_requires} %description +*List::MoreUtils* provides some trivial but commonly needed functionality +on lists which is not going to go into the List::Util manpage. - %{cpan_name} module for perl - List::MoreUtils provides some trivial but commonly needed functionality - on lists which is not going to go into List::Util. - Authors: Tassilo von Parseval, +All of the below functions are implementable in only a couple of lines of +Perl code. Using the functions from this module however should give +slightly better performance as everything is implemented in C. The +pure-Perl implementation of these functions only serves as a fallback in +case the C portions of this module couldn't be compiled on this machine. + +* any BLOCK LIST + + Returns a true value if any item in LIST meets the criterion given + through BLOCK. Sets '$_' for each item in LIST in turn: + + print "At least one value undefined" + if any { ! defined($_) } @list; + + Returns false otherwise, or if LIST is empty. + +* all BLOCK LIST + + Returns a true value if all items in LIST meet the criterion given + through BLOCK. Sets '$_' for each item in LIST in turn: + + print "All items defined" + if all { defined($_) } @list; + + Returns false otherwise, or if LIST is empty. + +* none BLOCK LIST + + Logically the negation of 'any'. Returns a true value if no item in LIST + meets the criterion given through BLOCK. Sets '$_' for each item in LIST + in turn: + + print "No value defined" + if none { defined($_) } @list; + + Returns false otherwise, or if LIST is empty. + +* notall BLOCK LIST + + Logically the negation of 'all'. Returns a true value if not all items in + LIST meet the criterion given through BLOCK. Sets '$_' for each item in + LIST in turn: + + print "Not all values defined" + if notall { defined($_) } @list; + + Returns false otherwise, or if LIST is empty. + +* true BLOCK LIST + + Counts the number of elements in LIST for which the criterion in BLOCK is + true. Sets '$_' for each item in LIST in turn: + + printf "%i item(s) are defined", true { defined($_) } @list; + +* false BLOCK LIST + + Counts the number of elements in LIST for which the criterion in BLOCK is + false. Sets '$_' for each item in LIST in turn: + + printf "%i item(s) are not defined", false { defined($_) } @list; + +* firstidx BLOCK LIST + +* first_index BLOCK LIST + + Returns the index of the first element in LIST for which the criterion in + BLOCK is true. Sets '$_' for each item in LIST in turn: + + my @list = (1, 4, 3, 2, 4, 6); + printf "item with index %i in list is 4", firstidx { $_ == 4 } @list; + __END__ + item with index 1 in list is 4 + + Returns '-1' if no such item could be found. + + 'first_index' is an alias for 'firstidx'. + +* lastidx BLOCK LIST + +* last_index BLOCK LIST + + Returns the index of the last element in LIST for which the criterion in + BLOCK is true. Sets '$_' for each item in LIST in turn: + + my @list = (1, 4, 3, 2, 4, 6); + printf "item with index %i in list is 4", lastidx { $_ == 4 } @list; + __END__ + item with index 4 in list is 4 + + Returns '-1' if no such item could be found. + + 'last_index' is an alias for 'lastidx'. + +* insert_after BLOCK VALUE LIST + + Inserts VALUE after the first item in LIST for which the criterion in + BLOCK is true. Sets '$_' for each item in LIST in turn. + + 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 + + Inserts VALUE after the first item in LIST which is equal to 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 + + Applies BLOCK to each item in LIST and returns a list of the values after + BLOCK has been applied. In scalar context, the last element is returned. + This function is similar to 'map' but will not modify the elements of the + input list: + + 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 + + Think of it as syntactic sugar for + + for (my @mult = @list) { $_ *= 2 } + +* before BLOCK LIST + + Returns a list of values of LIST upto (and not including) the point where + BLOCK returns a true value. Sets '$_' for each element in LIST in turn. + +* before_incl BLOCK LIST + + Same as 'before' but also includes the element for which BLOCK is true. + +* after BLOCK LIST + + Returns a list of the values of LIST after (and not including) the point + where BLOCK returns a true value. Sets '$_' for each element in LIST in + turn. + + @x = after { $_ % 5 == 0 } (1..9); # returns 6, 7, 8, 9 + +* after_incl BLOCK LIST + + Same as 'after' but also inclues the element for which BLOCK is true. + +* indexes BLOCK LIST + + Evaluates BLOCK for each element in LIST (assigned to '$_') and returns a + list of the indices of those elements for which BLOCK returned a true + value. This is just like 'grep' only that it returns indices instead of + values: + + @x = indexes { $_ % 2 == 0 } (1..10); # returns 1, 3, 5, 7, 9 + +* firstval BLOCK LIST + +* first_value BLOCK LIST + + Returns the first element in LIST for which BLOCK evaluates to true. Each + element of LIST is set to '$_' in turn. Returns 'undef' if no such + element has been found. + + 'first_val' is an alias for 'firstval'. + +* lastval BLOCK LIST + +* last_value BLOCK LIST + + Returns the last value in LIST for which BLOCK evaluates to true. Each + element of LIST is set to '$_' in turn. Returns 'undef' if no such + element has been found. + + 'last_val' is an alias for 'lastval'. + +* pairwise BLOCK ARRAY1 ARRAY2 + + Evaluates BLOCK for each pair of elements in ARRAY1 and ARRAY2 and + returns a new list consisting of BLOCK's return values. The two elements + are set to '$a' and '$b'. Note that those two are aliases to the original + value so changing them will modify the input arrays. + + @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 ... + + Creates an array iterator to return the elements of the list of arrays + ARRAY1, ARRAY2 throughout ARRAYn in turn. That is, the first time it is + called, it returns the first element of each array. The next time, it + returns the second elements. And so on, until all elements are exhausted. + + This is useful for looping over more than one array at once: + + my $ea = each_array(@a, @b, @c); + while ( my ($a, $b, $c) = $ea->() ) { .... } + + The iterator returns the empty list when it reached the end of all + arrays. + + If the iterator is passed an argument of ''index'', then it retuns the + index of the last fetched set of values, as a scalar. + +* each_arrayref LIST + + Like each_array, but the arguments are references to arrays, not the + plain arrays. + +* natatime BLOCK LIST + + Creates an array iterator, for looping over an array in chunks of '$n' + items at a time. (n at a time, get it?). An example is probably a better + explanation than I could give in words. + + Example: + + my @x = ('a' .. 'g'); + my $it = natatime 3, @x; + while (my @vals = $it->()) + { + print "@vals\n"; + } + + This prints + + a b c + d e f + g + +* mesh ARRAY1 ARRAY2 [ ARRAY3 ... ] + +* zip ARRAY1 ARRAY2 [ ARRAY3 ... ] + + Returns a list consisting of the first elements of each array, then the + second, then the third, etc, until all arrays are exhausted. + + Examples: + + @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 + + 'zip' is an alias for 'mesh'. + +* uniq LIST + +* distinct LIST + + Returns a new list by stripping duplicate values in LIST. The order of + elements in the returned list is the same as in LIST. In scalar context, + returns the number of unique elements in LIST. + + 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 + + Calculates the minimum and maximum of LIST and returns a two element list + with the first element being the minimum and the second the maximum. + Returns the empty list if LIST was empty. + + The 'minmax' algorithm differs from a naive iteration over the list where + each element is compared to two values being the so far calculated min + and max value in that it only requires 3n/2 - 2 comparisons. Thus it is + the most efficient possible algorithm. + + However, the Perl implementation of it has some overhead simply due to + the fact that there are more lines of Perl code involved. Therefore, LIST + needs to be fairly big in order for 'minmax' to win over a naive + implementation. This limitation does not apply to the XS version. + +* part BLOCK LIST + + Partitions LIST based on the return value of BLOCK which denotes into + which partition the current value is put. + + Returns a list of the partitions thusly created. Each partition created + is a reference to an array. + + my $i = 0; + my @part = part { $i++ % 2 } 1 .. 8; # returns [1, 3, 5, 7], [2, 4, 6, 8] + + You can have a sparse list of partitions as well where non-set partitions + will be undef: + + my @part = part { 2 } 1 .. 10; # returns undef, undef, [ 1 .. 10 ] + + Be careful with negative values, though: + + my @part = part { -1 } 1 .. 10; + __END__ + Modification of non-creatable array value attempted, subscript -1 ... + + Negative values are only ok when they refer to a partition previously + created: + + my @idx = ( 0, 1, -1 ); + my $i = 0; + my @part = part { $idx[$++ % 3] } 1 .. 8; # [1, 4, 7], [2, 3, 5, 6, 8] %prep %setup -q -n %{cpan_name}-%{version} %build -perl Makefile.PL OPTIMIZE="$RPM_OPT_FLAGS -Wall" +%{__perl} Makefile.PL INSTALLDIRS=vendor OPTIMIZE="%{optflags}" %{__make} %{?_smp_mflags} %check @@ -57,11 +369,11 @@ perl Makefile.PL OPTIMIZE="$RPM_OPT_FLAGS -Wall" %perl_process_packlist %perl_gen_filelist -%clean -%{__rm} -rf $RPM_BUILD_ROOT +%clean +%{__rm} -rf %{buildroot} %files -f %{name}.files -%defattr(-, root, root) -%doc Changes README +%defattr(644,root,root,755) +%doc Changes LICENSE README %changelog From 0952c6759b6cc802feb6407805b35ba17723601fd72d4adacc07f1eeba089727 Mon Sep 17 00:00:00 2001 From: Stephan Kulow Date: Fri, 1 Apr 2011 08:15:15 +0000 Subject: [PATCH 3/5] fix changelog OBS-URL: https://build.opensuse.org/package/show/devel:languages:perl/perl-List-MoreUtils?expand=0&rev=14 --- perl-List-MoreUtils.changes | 6 ------ 1 file changed, 6 deletions(-) diff --git a/perl-List-MoreUtils.changes b/perl-List-MoreUtils.changes index 675c2b9..c4a853b 100644 --- a/perl-List-MoreUtils.changes +++ b/perl-List-MoreUtils.changes @@ -1,9 +1,3 @@ -------------------------------------------------------------------- -Thu Mar 31 12:41:18 UTC 2011 - coolo@novell.com - -- initial package 0.30 - * created by cpanspec 1.78.03 - ------------------------------------------------------------------- Thu Mar 31 12:40:18 UTC 2011 - coolo@novell.com From 85c292f27aeb5acfbd39d708665f53bf45a72adfd2cea8d77cc90f472d0b1b8f Mon Sep 17 00:00:00 2001 From: Stephan Kulow Date: Fri, 1 Apr 2011 11:08:14 +0000 Subject: [PATCH 4/5] - updated to 0.30 OBS-URL: https://build.opensuse.org/package/show/devel:languages:perl/perl-List-MoreUtils?expand=0&rev=15 --- perl-List-MoreUtils.changes | 5 + perl-List-MoreUtils.spec | 314 ------------------------------------ 2 files changed, 5 insertions(+), 314 deletions(-) diff --git a/perl-List-MoreUtils.changes b/perl-List-MoreUtils.changes index c4a853b..b02a38c 100644 --- a/perl-List-MoreUtils.changes +++ b/perl-List-MoreUtils.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Fri Apr 1 11:06:39 UTC 2011 - coolo@novell.com + +- updated to 0.30 + ------------------------------------------------------------------- Thu Mar 31 12:40:18 UTC 2011 - coolo@novell.com diff --git a/perl-List-MoreUtils.spec b/perl-List-MoreUtils.spec index a688b99..396b540 100644 --- a/perl-List-MoreUtils.spec +++ b/perl-List-MoreUtils.spec @@ -40,320 +40,6 @@ slightly better performance as everything is implemented in C. The pure-Perl implementation of these functions only serves as a fallback in case the C portions of this module couldn't be compiled on this machine. -* any BLOCK LIST - - Returns a true value if any item in LIST meets the criterion given - through BLOCK. Sets '$_' for each item in LIST in turn: - - print "At least one value undefined" - if any { ! defined($_) } @list; - - Returns false otherwise, or if LIST is empty. - -* all BLOCK LIST - - Returns a true value if all items in LIST meet the criterion given - through BLOCK. Sets '$_' for each item in LIST in turn: - - print "All items defined" - if all { defined($_) } @list; - - Returns false otherwise, or if LIST is empty. - -* none BLOCK LIST - - Logically the negation of 'any'. Returns a true value if no item in LIST - meets the criterion given through BLOCK. Sets '$_' for each item in LIST - in turn: - - print "No value defined" - if none { defined($_) } @list; - - Returns false otherwise, or if LIST is empty. - -* notall BLOCK LIST - - Logically the negation of 'all'. Returns a true value if not all items in - LIST meet the criterion given through BLOCK. Sets '$_' for each item in - LIST in turn: - - print "Not all values defined" - if notall { defined($_) } @list; - - Returns false otherwise, or if LIST is empty. - -* true BLOCK LIST - - Counts the number of elements in LIST for which the criterion in BLOCK is - true. Sets '$_' for each item in LIST in turn: - - printf "%i item(s) are defined", true { defined($_) } @list; - -* false BLOCK LIST - - Counts the number of elements in LIST for which the criterion in BLOCK is - false. Sets '$_' for each item in LIST in turn: - - printf "%i item(s) are not defined", false { defined($_) } @list; - -* firstidx BLOCK LIST - -* first_index BLOCK LIST - - Returns the index of the first element in LIST for which the criterion in - BLOCK is true. Sets '$_' for each item in LIST in turn: - - my @list = (1, 4, 3, 2, 4, 6); - printf "item with index %i in list is 4", firstidx { $_ == 4 } @list; - __END__ - item with index 1 in list is 4 - - Returns '-1' if no such item could be found. - - 'first_index' is an alias for 'firstidx'. - -* lastidx BLOCK LIST - -* last_index BLOCK LIST - - Returns the index of the last element in LIST for which the criterion in - BLOCK is true. Sets '$_' for each item in LIST in turn: - - my @list = (1, 4, 3, 2, 4, 6); - printf "item with index %i in list is 4", lastidx { $_ == 4 } @list; - __END__ - item with index 4 in list is 4 - - Returns '-1' if no such item could be found. - - 'last_index' is an alias for 'lastidx'. - -* insert_after BLOCK VALUE LIST - - Inserts VALUE after the first item in LIST for which the criterion in - BLOCK is true. Sets '$_' for each item in LIST in turn. - - 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 - - Inserts VALUE after the first item in LIST which is equal to 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 - - Applies BLOCK to each item in LIST and returns a list of the values after - BLOCK has been applied. In scalar context, the last element is returned. - This function is similar to 'map' but will not modify the elements of the - input list: - - 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 - - Think of it as syntactic sugar for - - for (my @mult = @list) { $_ *= 2 } - -* before BLOCK LIST - - Returns a list of values of LIST upto (and not including) the point where - BLOCK returns a true value. Sets '$_' for each element in LIST in turn. - -* before_incl BLOCK LIST - - Same as 'before' but also includes the element for which BLOCK is true. - -* after BLOCK LIST - - Returns a list of the values of LIST after (and not including) the point - where BLOCK returns a true value. Sets '$_' for each element in LIST in - turn. - - @x = after { $_ % 5 == 0 } (1..9); # returns 6, 7, 8, 9 - -* after_incl BLOCK LIST - - Same as 'after' but also inclues the element for which BLOCK is true. - -* indexes BLOCK LIST - - Evaluates BLOCK for each element in LIST (assigned to '$_') and returns a - list of the indices of those elements for which BLOCK returned a true - value. This is just like 'grep' only that it returns indices instead of - values: - - @x = indexes { $_ % 2 == 0 } (1..10); # returns 1, 3, 5, 7, 9 - -* firstval BLOCK LIST - -* first_value BLOCK LIST - - Returns the first element in LIST for which BLOCK evaluates to true. Each - element of LIST is set to '$_' in turn. Returns 'undef' if no such - element has been found. - - 'first_val' is an alias for 'firstval'. - -* lastval BLOCK LIST - -* last_value BLOCK LIST - - Returns the last value in LIST for which BLOCK evaluates to true. Each - element of LIST is set to '$_' in turn. Returns 'undef' if no such - element has been found. - - 'last_val' is an alias for 'lastval'. - -* pairwise BLOCK ARRAY1 ARRAY2 - - Evaluates BLOCK for each pair of elements in ARRAY1 and ARRAY2 and - returns a new list consisting of BLOCK's return values. The two elements - are set to '$a' and '$b'. Note that those two are aliases to the original - value so changing them will modify the input arrays. - - @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 ... - - Creates an array iterator to return the elements of the list of arrays - ARRAY1, ARRAY2 throughout ARRAYn in turn. That is, the first time it is - called, it returns the first element of each array. The next time, it - returns the second elements. And so on, until all elements are exhausted. - - This is useful for looping over more than one array at once: - - my $ea = each_array(@a, @b, @c); - while ( my ($a, $b, $c) = $ea->() ) { .... } - - The iterator returns the empty list when it reached the end of all - arrays. - - If the iterator is passed an argument of ''index'', then it retuns the - index of the last fetched set of values, as a scalar. - -* each_arrayref LIST - - Like each_array, but the arguments are references to arrays, not the - plain arrays. - -* natatime BLOCK LIST - - Creates an array iterator, for looping over an array in chunks of '$n' - items at a time. (n at a time, get it?). An example is probably a better - explanation than I could give in words. - - Example: - - my @x = ('a' .. 'g'); - my $it = natatime 3, @x; - while (my @vals = $it->()) - { - print "@vals\n"; - } - - This prints - - a b c - d e f - g - -* mesh ARRAY1 ARRAY2 [ ARRAY3 ... ] - -* zip ARRAY1 ARRAY2 [ ARRAY3 ... ] - - Returns a list consisting of the first elements of each array, then the - second, then the third, etc, until all arrays are exhausted. - - Examples: - - @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 - - 'zip' is an alias for 'mesh'. - -* uniq LIST - -* distinct LIST - - Returns a new list by stripping duplicate values in LIST. The order of - elements in the returned list is the same as in LIST. In scalar context, - returns the number of unique elements in LIST. - - 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 - - Calculates the minimum and maximum of LIST and returns a two element list - with the first element being the minimum and the second the maximum. - Returns the empty list if LIST was empty. - - The 'minmax' algorithm differs from a naive iteration over the list where - each element is compared to two values being the so far calculated min - and max value in that it only requires 3n/2 - 2 comparisons. Thus it is - the most efficient possible algorithm. - - However, the Perl implementation of it has some overhead simply due to - the fact that there are more lines of Perl code involved. Therefore, LIST - needs to be fairly big in order for 'minmax' to win over a naive - implementation. This limitation does not apply to the XS version. - -* part BLOCK LIST - - Partitions LIST based on the return value of BLOCK which denotes into - which partition the current value is put. - - Returns a list of the partitions thusly created. Each partition created - is a reference to an array. - - my $i = 0; - my @part = part { $i++ % 2 } 1 .. 8; # returns [1, 3, 5, 7], [2, 4, 6, 8] - - You can have a sparse list of partitions as well where non-set partitions - will be undef: - - my @part = part { 2 } 1 .. 10; # returns undef, undef, [ 1 .. 10 ] - - Be careful with negative values, though: - - my @part = part { -1 } 1 .. 10; - __END__ - Modification of non-creatable array value attempted, subscript -1 ... - - Negative values are only ok when they refer to a partition previously - created: - - my @idx = ( 0, 1, -1 ); - my $i = 0; - my @part = part { $idx[$++ % 3] } 1 .. 8; # [1, 4, 7], [2, 3, 5, 6, 8] - %prep %setup -q -n %{cpan_name}-%{version} From fb92a06a74b8f05f0f813f8b290103398644aaca75c738df7c35f6cb60e3bc3d Mon Sep 17 00:00:00 2001 From: Stephan Kulow Date: Fri, 1 Apr 2011 11:08:35 +0000 Subject: [PATCH 5/5] - shortened description OBS-URL: https://build.opensuse.org/package/show/devel:languages:perl/perl-List-MoreUtils?expand=0&rev=16 --- perl-List-MoreUtils.changes | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/perl-List-MoreUtils.changes b/perl-List-MoreUtils.changes index b02a38c..64a81b6 100644 --- a/perl-List-MoreUtils.changes +++ b/perl-List-MoreUtils.changes @@ -1,7 +1,7 @@ ------------------------------------------------------------------- Fri Apr 1 11:06:39 UTC 2011 - coolo@novell.com -- updated to 0.30 +- shortened description ------------------------------------------------------------------- Thu Mar 31 12:40:18 UTC 2011 - coolo@novell.com