NAME

List::Util::MaybeXS - List::Util but with Pure Perl fallback

SYNOPSIS

use List::Util::MaybeXS qw(
  reduce any all none notall first reductions

  max maxstr min minstr product sum sum0

  pairs unpairs pairkeys pairvalues pairfirst pairgrep pairmap

  shuffle uniq uniqint uniqnum uniqstr zip mesh
);

DESCRIPTION

This module provides the same functions as List::Util, but falls back to pure perl implementations if the installed List::Util is too old to provide them.

Picking between List::Util's XS accellerated functions and the PP versions is done on a per-sub basis, so using this module should never result in a slowdown over using List::Util directly.

FUNCTIONS

all
any
first
min
max
minstr
maxstr
none
notall
product
reduce
reductions
sum
sum0
shuffle
uniq
uniqnum
uniqint
uniqstr
pairs
unpairs
pairkeys
pairvalues
pairmap
pairgrep
pairfirst
tail
zip
zip_longest
zip_shortest
mesh
mesh_longest
mesh_shortest

CONFIGURATION VARIABLES

$RAND

The variables $List::Util::RAND, $List::Util::PP::RAND, and $List::Util::MaybeXS::RAND are all aliased to each other. Any of them will impact both List::Util::PP and List::Util functions.

DIFFERENCES FROM List::Util

As the subs provided are implemented in perl, there are some minor differences with the interface.

@_ in blocks

Inside a callback block (such as any { }), @_ will be empty when using the pure perl implementation. With the XS implementation, the outer @_ will be visible. Under the perl debugger, the XS implementation will also not be able to see the outer @_.

AUTHORS

Graham Knop <haarg@haarg.org>

Paul Evans <leonerd@leonerd.org.uk>

Graham Barr <gbarr@pobox.com>

CONTRIBUTORS

None so far.

COPYRIGHT

Copyright (c) 2017 the List::Util::MaybeXS "AUTHORS" and "CONTRIBUTORS" as listed above.

LICENSE

This library is free software and may be distributed under the same terms as perl itself. See http://dev.perl.org/licenses/.