---
name: "SHARYANTO::Array::Util"
section: "3pm"
platform: "linux"
package: "libsharyanto-utils-perl"
version: "0.77-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SHARYANTO::Array::Util"
---

# SHARYANTO::Array::Util(3pm)

Array-related utilities

## NAME

SHARYANTO::Array::Util - Array-related utilities

## VERSION

This document describes version 0.77 of SHARYANTO::Array::Util (from Perl distribution SHARYANTO-Utils), released on 2015-09-04.

## SYNOPSIS

```
 use SHARYANTO::Array::Util qw(match_array_or_regex split_array);
 match_array_or_regex('bar',  ['foo', 'bar', qr/[xyz]/]); # true, matches string
 match_array_or_regex('baz',  ['foo', 'bar', qr/[xyz]/]); # true, matches regex
 match_array_or_regex('oops', ['foo', 'bar', qr/[xyz]/]); # false
 my @res = split_array('--', [qw/--opt1 --opt2 -- foo bar -- --val/]);
 # -> ([qw/--opt1 --opt2/],  [qw/foo bar/],  [qw/--val/])
 my @res = split_array(qr/--/, [qw/--opt1 --opt2 -- foo bar -- --val/], 2);
 # -> ([qw/--opt1 --opt2/],  [qw/foo bar -- --val/])
 my @res = split_array(qr/(--)/, [qw/--opt1 --opt2 -- foo bar -- --val/], 2);
 # -> ([qw/--opt1 --opt2/],  [qw/--/],  [qw/foo bar -- --val/])
 my @res = split_array(qr/(-)(-)/, [qw/--opt1 --opt2 -- foo bar -- --val/], 2);
 # -> ([qw/--opt1 --opt2/],  [qw/- -/],  [qw/foo bar -- --val/])
```

## DESCRIPTION

## FUNCTIONS

### match\_array\_or\_regex($needle, $haystack) -\> any

Check whether an item matches (list of) values/regexes.

Examples:

```
 match_array_or_regex("abc", ["abc", "abd"]); # -> 1
 match_array_or_regex("abc", qr/ab./); # -> 1
 match_array_or_regex("abc", [qr/ab./, "abd"]); # -> 1
This routine can be used to match an item against a regex or a list of
strings/regexes, e.g. when matching against an ACL.
```

Since the smartmatch (`"~~"`) operator can already match against a list of strings or regexes, this function is currently basically equivalent to:

```
 if (ref($haystack) eq 'ARRAY') {
     return $needle ~~ @$haystack;
 } else {
     return $needle =~ /$haystack/;
 }
```

Arguments ('\*' denotes required arguments):

- •

  **haystack**\* =\> *re\|str\|array\[re\|str\]*

- •

  **needle**\* =\> *str*

Return value:  (any)

### match\_regex\_or\_array($needle, $haystack) -\> any

Alias for match\_array\_or\_regex.

Examples:

```
 match_regex_or_array("abc", ["abc", "abd"]); # -> 1
 match_regex_or_array("abc", qr/ab./); # -> 1
 match_regex_or_array("abc", [qr/ab./, "abd"]); # -> 1
This routine can be used to match an item against a regex or a list of
strings/regexes, e.g. when matching against an ACL.
```

Since the smartmatch (`"~~"`) operator can already match against a list of strings or regexes, this function is currently basically equivalent to:

```
 if (ref($haystack) eq 'ARRAY') {
     return $needle ~~ @$haystack;
 } else {
     return $needle =~ /$haystack/;
 }
```

Arguments ('\*' denotes required arguments):

- •

  **haystack**\* =\> *re\|str\|array\[re\|str\]*

- •

  **needle**\* =\> *str*

Return value:  (any)

### split\_array($str\_or\_re, \\@array\[, $limit\]) =\> LIST

Like the `"split()"` builtin Perl function, but applies on an array instead of a scalar. It loosely follows the `"split()"` semantic, with some exceptions.

### replace\_array\_content($aryref, @elems) =\> $aryref

Replace elements in \<$aryref\> with `@elems`. Return `$aryref`. Do not create a new arrayref object (i.e. it is different from: `"$aryref = ["new", "content"]"`).

Do not use this function. In Perl you can just use: `"splice(@$aryref, 0,` `length(@$aryref), @elems)"` or even easier: `"@$aryref = @elems"`. I put the function here for reminder.

## SEE ALSO

SHARYANTO

## HOMEPAGE

Please visit the project's homepage at \<https://metacpan.org/release/SHARYANTO-Utils\>.

## SOURCE

Source repository is at \<https://github.com/perlancar/perl-SHARYANTO-Utils\>.

## BUGS

Please report any bugs or feature requests on the bugtracker website \<https://rt.cpan.org/Public/Dist/Display.html?Name=SHARYANTO-Utils\>

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.

## AUTHOR

perlancar \<perlancar@cpan.org\>

## COPYRIGHT AND LICENSE

This software is copyright (c) 2015 by 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.
