NAME
Array::Util::MultiTarget - Apply an operation to multiple arrays
VERSION
This document describes version 0.001 of Array::Util::MultiTarget (from Perl distribution Array-Util-MultiTarget), released on 2023-12-03.
SYNOPSIS
use Array::Util::MultiTarget qw(
mtpop
mtpush
mtsplice
mtremovestr
mtremoveallstr
mtremovenum
mtremoveallnum
);
DESCRIPTION
This module provides functions to perform operations on multiple arrays at once. Some functions work best for arrays that contain parallel data, as shown in the Synopsis.
FUNCTIONS
mtpop
Usage:
@elems = mtpop [\@ary1, \@ary2, ...];
Pop each array and return the collected popped elements. @elems will contain:
($popped_from_ary1, $popped_from_ary2, ...)
mtpush
Usage:
mtpush [\@ary1, \@ary2, ...], @elems;
Push @elems to each array.
mtsplice
Usage:
@spliced = mtsplice [\@ary1, \@ary2, ...], $offset, $length, @list;
@spliced = mtsplice [\@ary1, \@ary2, ...], $offset, $length;
@spliced = mtsplice [\@ary1, \@ary2, ...], $offset;
Splice each array and return the collected result from splice(). @spliced will contain:
(\@spliced_elems_from_ary1, \@spliced_elems_from_ary2, ...)
mtremovestr
Usage:
$offset = mtremovestr [\@ary1, \@ary2, ...], $needle;
Find the first occurrence of $needle in @ary1 using eq operator, then remove it from @ary1 and return the offset where $needle was found. After that, remove the element at the same offset from the rest of the arrays.
If $needle is not found, will return undef and leave the arrays unmodified.
TODO: add option $minoffset, $maxoffset.
mtremoveallstr
Usage:
@offsets = mtremoveallstr [\@ary1, \@ary2, ...], $needle;
Find all occurrences of $needle in @ary1 using eq operator, then remove them from @ary1 and return the offsets where $needle were found. After that, remove the elements at the same offsets from the rest of the arrays.
If $needle is not found, will return empty list and leave the arrays unmodified.
TODO: add option $minoffset, $maxoffset.
mtremovenum
Like /mtremovestr except comparison is done using == operator instead of eq.
mtremoveallnum
Like /mtremoveallstr except comparison is done using == operator instead of eq.
HOMEPAGE
Please visit the project's homepage at https://metacpan.org/release/Array-Util-MultiTarget.
SOURCE
Source repository is at https://github.com/perlancar/perl-Array-Util-MultiTarget.
SEE ALSO
List::Util, List::MoreUtils, List::AllUtils
AUTHOR
perlancar <perlancar@cpan.org>
CONTRIBUTING
To contribute, you can send patches by email/via RT, or send pull requests on GitHub.
Most of the time, you don't need to build the distribution yourself. You can simply modify the code, then test via:
% prove -l
If you want to build the distribution (e.g. to try to install it locally on your system), you can install Dist::Zilla, Dist::Zilla::PluginBundle::Author::PERLANCAR, Pod::Weaver::PluginBundle::Author::PERLANCAR, and sometimes one or two other Dist::Zilla- and/or Pod::Weaver plugins. Any additional steps required beyond that are considered a bug and can be reported to me.
COPYRIGHT AND LICENSE
This software is copyright (c) 2023 by perlancar <perlancar@cpan.org>.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
BUGS
Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=Array-Util-MultiTarget
When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.