Date: Thursday November 28, 2019 @ 01:10 Author: argrath Update of /cvsroot/perldocjp/docs/modules/Scalar-List-Utils-1.21/List In directory sf-cvs:/tmp/cvs-serv40257/modules/Scalar-List-Utils-1.21/List Added Files: Util.pod Log Message: Scalar-List-Utils-1.21 =================================================================== File: Util.pod Status: Up-to-date Working revision: 1.1 Wed Nov 27 16:10:05 2019 Repository revision: 1.1 /cvsroot/perldocjp/docs/modules/Scalar-List-Utils-1.21/List/Util.pod,v Existing Tags: No Tags Exist -------------- next part -------------- Index: docs/modules/Scalar-List-Utils-1.21/List/Util.pod diff -u /dev/null docs/modules/Scalar-List-Utils-1.21/List/Util.pod:1.1 --- /dev/null Thu Nov 28 01:10:05 2019 +++ docs/modules/Scalar-List-Utils-1.21/List/Util.pod Thu Nov 28 01:10:05 2019 @@ -0,0 +1,366 @@ + +=head1 NAME + +=begin original + +List::Util - A selection of general-utility list subroutines + +=end original + +List::Util - °ìÈÌŪ¤ËÍÍѤʥꥹ¥È¥µ¥Ö¥ë¡¼¥Á¥ó½¸ + +=head1 SYNOPSIS + + use List::Util qw(first max maxstr min minstr reduce shuffle sum); + +=head1 DESCRIPTION + +=begin original + +C<List::Util> contains a selection of subroutines that people have +expressed would be nice to have in the perl core, but the usage would +not really be high enough to warrant the use of a keyword, and the size +so small such that being individual extensions would be wasteful. + +=end original + +C<List::Util> ¤Ï¡¢¿Í¡¹¤¬ perl ¥³¥¢¤Ë¤¢¤ì¤Ð¤¤¤¤¤Î¤Ë¤ÈɽÌÀ¤¹¤ë¤±¤ì¤É¤â¡¢ +¥¡¼¥ï¡¼¥É¤Î»ÈÍѤòÊݾڤ·¡¢ÆÈΩ¤·¤¿³ÈÄ¥¤Ë¤¹¤ë¤Î¤¬ÌµÂ̤ʤۤɥµ¥¤¥º¤¬¾®¤µ¤¤¡¢¤È +¤¤¤¦¤Û¤É¼ÂºÝ¤Î»ÈÍÑÉÑÅÙ¤¬¹â¤¯¤Ê¤¤¥µ¥Ö¥ë¡¼¥Á¥ó½¸¤Ç¤¹¡£ + +=begin original + +By default C<List::Util> does not export any subroutines. The +subroutines defined are + +=end original + +¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï C<List::Util> ¤Ï²¿¤Î¥µ¥Ö¥ë¡¼¥Á¥ó¤â¥¨¥¯¥¹¥Ý¡¼¥È¤·¤Þ¤»¤ó¡£ +ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï: + +=over 4 + +=item first BLOCK LIST + +=begin original + +Similar to C<grep> in that it evaluates BLOCK setting C<$_> to each element +of LIST in turn. C<first> returns the first element where the result from +BLOCK is a true value. If BLOCK never returns true or LIST was empty then +C<undef> is returned. + +=end original + +LIST ¤Î¤½¤ì¤¾¤ì¤ÎÍ×ÁǤò½ç¤Ë C<$_> ÀßÄꤷ¤Æ BLOCK ¤òɾ²Á¤¹¤ë¤È¤¤¤¦°ÕÌ£¤Ç +C<grep> ¤È»÷¤Æ¤¤¤Þ¤¹¡£ +C<first> ¤Ï¡¢BLOCK ¤Î·ë²Ì¤¬¿¿¤ÎÃͤˤʤ俺ǽé¤ÎÃͤòÊÖ¤·¤Þ¤¹¡£ +BLOCK ¤¬¿¿¤òÊÖ¤µ¤Ê¤«¤Ã¤¿¤ê¡¢LIST ¤¬¶õ¤Î¾ì¹ç¤Ï¡¢C<undef> ¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£ + + $foo = first { defined($_) } @list # first defined value in @list + $foo = first { $_ > $value } @list # first value in @list which + # is greater than $value + +=begin original + +This function could be implemented using C<reduce> like this + +=end original + +¤³¤Î´Ø¿ô¤Ï¡¢C<reduce> ¤ò»È¤Ã¤Æ¼¡¤Î¤è¤¦¤Ë¤·¤Æ¼ÂÁõ¤Ç¤¤Þ¤¹: + + $foo = reduce { defined($a) ? $a : wanted($b) ? $b : undef } undef, @list + +=begin original + +for example wanted() could be defined() which would return the first +defined value in @list + +=end original + +Î㤨¤Ð¡¢wanted() ¤¬ defined() ¤Ê¤é @list ¤ÎÃæ¤ÇºÇ½é¤ÎÄêµÁ¤µ¤ì¤¿ÃͤòÊÖ¤·¤Þ¤¹¡£ + +=item max LIST + +=begin original + +Returns the entry in the list with the highest numerical value. If the +list is empty then C<undef> is returned. + +=end original + +¥ê¥¹¥È¤Î¥¨¥ó¥È¥ê¤ÎÃæ¤ÇºÇÂç¤Î¿ôÃͤòÊÖ¤·¤Þ¤¹¡£ +¥ê¥¹¥È¤¬¶õ¤Î¾ì¹ç¡¢C<undef> ¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£ + + $foo = max 1..10 # 10 + $foo = max 3,9,12 # 12 + $foo = max @bar, @baz # whatever + +=begin original + +This function could be implemented using C<reduce> like this + +=end original + +¤³¤Î´Ø¿ô¤Ï¡¢C<reduce> ¤ò»È¤Ã¤Æ¼¡¤Î¤è¤¦¤Ë¤·¤Æ¼ÂÁõ¤Ç¤¤Þ¤¹: + + $foo = reduce { $a > $b ? $a : $b } 1..10 + +=item maxstr LIST + +=begin original + +Similar to C<max>, but treats all the entries in the list as strings +and returns the highest string as defined by the C<gt> operator. +If the list is empty then C<undef> is returned. + +=end original + +C<max> ¤ÈƱÍͤǤ¹¤¬¡¢¥ê¥¹¥È¤ÎÃæ¤ÎÁ´¤Æ¤Î¥¨¥ó¥È¥ê¤òʸ»úÎó¤È¤·¤Æ°·¤¤¡¢ +C<gt> ±é»»»Ò¤ÇÄêµÁ¤µ¤ì¤ëºÇÂç¤Îʸ»úÎó¤òÊÖ¤·¤Þ¤¹¡£ +¥ê¥¹¥È¤¬¶õ¤Î¾ì¹ç¡¢C<undef> ¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£ + + $foo = maxstr 'A'..'Z' # 'Z' + $foo = maxstr "hello","world" # "world" + $foo = maxstr @bar, @baz # whatever + +=begin original + +This function could be implemented using C<reduce> like this + +=end original + +¤³¤Î´Ø¿ô¤Ï¡¢C<reduce> ¤ò»È¤Ã¤Æ¼¡¤Î¤è¤¦¤Ë¤·¤Æ¼ÂÁõ¤Ç¤¤Þ¤¹: + + $foo = reduce { $a gt $b ? $a : $b } 'A'..'Z' + +=item min LIST + +=begin original + +Similar to C<max> but returns the entry in the list with the lowest +numerical value. If the list is empty then C<undef> is returned. + +=end original + +C<max> ¤ÈƱÍͤǤ¹¤¬¡¢¥ê¥¹¥È¤Î¥¨¥ó¥È¥ê¤ÎÃæ¤ÇºÇ¾®¤Î¿ôÃͤòÊÖ¤·¤Þ¤¹¡£ +¥ê¥¹¥È¤¬¶õ¤Î¾ì¹ç¡¢C<undef> ¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£ + + $foo = min 1..10 # 1 + $foo = min 3,9,12 # 3 + $foo = min @bar, @baz # whatever + +=begin original + +This function could be implemented using C<reduce> like this + +=end original + +¤³¤Î´Ø¿ô¤Ï¡¢C<reduce> ¤ò»È¤Ã¤Æ¼¡¤Î¤è¤¦¤Ë¤·¤Æ¼ÂÁõ¤Ç¤¤Þ¤¹: + + $foo = reduce { $a < $b ? $a : $b } 1..10 + +=item minstr LIST + +=begin original + +Similar to C<min>, but treats all the entries in the list as strings +and returns the lowest string as defined by the C<lt> operator. +If the list is empty then C<undef> is returned. + +=end original + +C<min> ¤ÈƱÍͤǤ¹¤¬¡¢¥ê¥¹¥È¤ÎÃæ¤ÎÁ´¤Æ¤Î¥¨¥ó¥È¥ê¤òʸ»úÎó¤È¤·¤Æ°·¤¤¡¢ +C<lt> ±é»»»Ò¤ÇÄêµÁ¤µ¤ì¤ëºÇ¾®¤Îʸ»úÎó¤òÊÖ¤·¤Þ¤¹¡£ +¥ê¥¹¥È¤¬¶õ¤Î¾ì¹ç¡¢C<undef> ¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£ + + $foo = minstr 'A'..'Z' # 'A' + $foo = minstr "hello","world" # "hello" + $foo = minstr @bar, @baz # whatever + +=begin original + +This function could be implemented using C<reduce> like this + +=end original + +¤³¤Î´Ø¿ô¤Ï¡¢C<reduce> ¤ò»È¤Ã¤Æ¼¡¤Î¤è¤¦¤Ë¤·¤Æ¼ÂÁõ¤Ç¤¤Þ¤¹: + + $foo = reduce { $a lt $b ? $a : $b } 'A'..'Z' + +=item reduce BLOCK LIST + +=begin original + +Reduces LIST by calling BLOCK, in a scalar context, multiple times, +setting C<$a> and C<$b> each time. The first call will be with C<$a> +and C<$b> set to the first two elements of the list, subsequent +calls will be done by setting C<$a> to the result of the previous +call and C<$b> to the next element in the list. + +=end original + +BLOCK ¤ò¥¹¥«¥é¥³¥ó¥Æ¥¥¹¥È¤ÇÊ£¿ô²ó¡¢Ëè²ó C<$a> ¤È C<$b> ¤òÀßÄꤷ¤Æ +¸Æ¤Ó½Ð¤¹¤³¤È¤Ç LIST ¤ò½Ì¾®(reduce)¤·¤Þ¤¹¡£ +ºÇ½é¤Î¸Æ¤Ó½Ð¤·¤Ç¤Ï C<$a> ¤È C<$b> ¤Ï¥ê¥¹¥È¤ÎºÇ½é¤ÎÆó¤Ä¤ÎÍ×ÁǤòÀßÄꤷ¡¢ +°ú¤Â³¤¯¸Æ¤Ó½Ð¤·¤Ç¤Ï C<$a> ¤ËÁ°²ó¤Î¸Æ¤Ó½Ð¤·¤Î·ë²Ì¤ò¡¢ +C<$b> ¤Ë¥ê¥¹¥È¤Î¼¡¤ÎÍ×ÁǤòÀßÄꤷ¤Æ¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ + +=begin original + +Returns the result of the last call to BLOCK. If LIST is empty then +C<undef> is returned. If LIST only contains one element then that +element is returned and BLOCK is not executed. + +=end original + +BLOCK ¤ÎºÇ¸å¤Î¸Æ¤Ó½Ð¤·¤Î·ë²Ì¤òÊÖ¤·¤Þ¤¹¡£ +LIST ¤¬¶õ¤Î¾ì¹ç¡¢C<undef> ¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£ +LIST ¤¬ 1 Í×ÁǤ·¤«»ý¤¿¤Ê¤¤¾ì¹ç¡¢¤½¤ÎÍ×ÁǤ¬ÊÖ¤µ¤ì¡¢BLOCK ¤Ï¼Â¹Ô¤µ¤ì¤Þ¤»¤ó¡£ + + $foo = reduce { $a < $b ? $a : $b } 1..10 # min + $foo = reduce { $a lt $b ? $a : $b } 'aa'..'zz' # minstr + $foo = reduce { $a + $b } 1 .. 10 # sum + $foo = reduce { $a . $b } @bar # concat + +=begin original + +If your algorithm requires that C<reduce> produce an identity value, then +make sure that you always pass that identity value as the first argument to prevent +C<undef> being returned + +=end original + +C<reduce> ¤¬Ã±°Ì¸µ¤ò½ÐÎϤ¹¤ë¤³¤È¤¬¤¢¤Ê¤¿¤Î¥¢¥ë¥´¥ê¥º¥à¤Ë¤È¤Ã¤ÆɬÍפʾì¹ç¡¢ +C<undef> ¤òÊÖ¤¹¤Î¤òÈò¤±¤ë¤¿¤á¤Ë¾ï¤ËºÇ½é¤ÎÍ×ÁǤȤ·¤Æñ°Ì¸µ¤ò +ÅϤ¹¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤: + + $foo = reduce { $a + $b } 0, @values; # sum with 0 identity value + +=item shuffle LIST + +=begin original + +Returns the elements of LIST in a random order + +=end original + +LIST ¤ÎÍ×ÁǤò¥é¥ó¥À¥à¤Ê½ç½ø¤ÇÊÖ¤·¤Þ¤¹: + + @cards = shuffle 0..51 # 0..51 in a random order + +=item sum LIST + +=begin original + +Returns the sum of all the elements in LIST. If LIST is empty then +C<undef> is returned. + +=end original + +LIST ¤ÎÁ´¤Æ¤ÎÍ×ÁǤιç·×¤òÊÖ¤·¤Þ¤¹¡£ +LIST ¤¬¶õ¤Î¾ì¹ç¡¢C<undef> ¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£ + + $foo = sum 1..10 # 55 + $foo = sum 3,9,12 # 24 + $foo = sum @bar, @baz # whatever + +=begin original + +This function could be implemented using C<reduce> like this + +=end original + +¤³¤Î´Ø¿ô¤Ï¡¢C<reduce> ¤ò»È¤Ã¤Æ¼¡¤Î¤è¤¦¤Ë¤·¤Æ¼ÂÁõ¤Ç¤¤Þ¤¹: + + $foo = reduce { $a + $b } 1..10 + +=begin original + +If your algorithm requires that C<sum> produce an identity of 0, then +make sure that you always pass C<0> as the first argument to prevent +C<undef> being returned + +=end original + +C<sum> ¤¬Ã±°Ì¸µ¤Î 0 ¤ò½ÐÎϤ¹¤ë¤³¤È¤¬¤¢¤Ê¤¿¤Î¥¢¥ë¥´¥ê¥º¥à¤Ë¤È¤Ã¤Æ +ɬÍפʾì¹ç¡¢ +C<undef> ¤òÊÖ¤¹¤Î¤òÈò¤±¤ë¤¿¤á¤Ë¾ï¤ËºÇ½é¤ÎÍ×ÁǤȤ·¤Æ C<0> ¤ò +ÅϤ¹¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤: + + $foo = sum 0, @values; + +=back + +=head1 KNOWN BUGS + +(´ûÃΤΥХ°) + +=begin original + +With perl versions prior to 5.005 there are some cases where reduce +will return an incorrect result. This will show up as test 7 of +reduce.t failing. + +=end original + +¥Ð¡¼¥¸¥ç¥ó 5.005 ¤è¤êÁ°¤Î perl ¤Ç¤Ï¡¢¾ì¹ç¤Ë¤è¤Ã¤Æ¤Ï reduce ¤¬ +´Ö°ã¤Ã¤¿·ë²Ì¤òÊÖ¤¹¤³¤È¤¬¤¢¤ê¤Þ¤·¤¿¡£ +¤³¤ì¤Ï reduce.t ¤Î¥Æ¥¹¥È 7 ¤Î¼ºÇԤȤ·¤Æ¸½¤ì¤Þ¤¹¡£ + +=head1 SUGGESTED ADDITIONS + +(Äó°Æ¤µ¤ì¤¿³ÈÄ¥) + +=begin original + +The following are additions that have been requested, but I have been reluctant +to add due to them being very simple to implement in perl + +=end original + +°Ê²¼¤Î¤â¤Î¤ÏÍ×˾¤µ¤ì¤¿³ÈÄ¥¤Ç¤¹¤¬¡¢»ä¤ÏÄɲ乤ë¤Î¤Ëµ¤¾è¤ê¤·¤Þ¤»¤ó; +perl ¤Ç¼ÂÁõ¤¹¤ë¤Î¤¬¤È¤Æ¤â´Êñ¤À¤«¤é¤Ç¤¹: + + # One argument is true + + sub any { $_ && return 1 for @_; 0 } + + # All arguments are true + + sub all { $_ || return 0 for @_; 1 } + + # All arguments are false + + sub none { $_ && return 0 for @_; 1 } + + # One argument is false + + sub notall { $_ || return 1 for @_; 0 } + + # How many elements are true + + sub true { scalar grep { $_ } @_ } + + # How many elements are false + + sub false { scalar grep { !$_ } @_ } + +=head1 SEE ALSO + +L<Scalar::Util>, L<List::MoreUtils> + +=head1 COPYRIGHT + +Copyright (c) 1997-2007 Graham Barr <gbarr****@pobox*****>. All rights reserved. +This program is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. + +=begin meta + +Translate: Kentaro Shirakata <argra****@ub32*****> +Status: completed + +=end meta + +=cut +