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.