---
name: "Config::Model::ListId"
section: "3pm"
platform: "linux"
package: "libconfig-model-perl"
version: "2.155-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Config::Model::ListId"
---

# Config::Model::ListId(3pm)

Handle list element for configuration model

## NAME

Config::Model::ListId - Handle list element for configuration model

## VERSION

version 2.155

## SYNOPSIS

See "SYNOPSIS" in Config::Model::AnyId

## DESCRIPTION

This class provides list elements for a Config::Model::Node.

## CONSTRUCTOR

ListId object should not be created directly.

## List model declaration

See model declaration section from Config::Model::AnyId.

## Methods

### get\_type

Returns `"list"`.

### fetch\_size

Returns the number of elements of the list.

### load

Parameters: `"(string, [ check => 'no' ] )"`

Store a set of values passed as a comma separated list of values.  Values can be quoted strings. (i.e `""a,a",b"` yields `"('a,a', 'b')"` list).

`"check"` can be yes, no or skip

### store\_set

Store a set of values (passed as list)

If tinkering with check is required, use the following way :

```
 store_set ( \@v , check => 'skip' );
```

### move

Parameters: `"( from_index, to_index, [ check => 'no' )"`

Move an element within the list. `"check"` can be 'yes' 'no' 'skip'

### push

Parameters: `"( value1, [ value2 ... ] )"`

push some values at the end of the list.

### push\_x

Parameters: `"( values => [ v1','v2', ...] ,  ...  )"`

Like push with extended options. Options are:

- check

  Check value validaty. Either `"yes"` (default), `"no"`, `"skip"`

- values

  Values to push (array\_ref)

- value

  Single value to push

- annotation

  ### unshift

Parameters: `"( value1, [ value2 ... ] )"`

unshift some values at the end of the list.

### insert\_at

Parameters: `"( idx, value1, [ value2 ... ] )"`

unshift some values at index idx in the list.

### insert\_before

Parameters: `"( ( val | qr/stuff/ ) , value1, [ value2 ... ] )"`

unshift some values before value equal to `"val"` or before value matching `"stuff"`.

### insort

Parameters: `"( value1, [ value2 ... ] )"`

Insert `"zz"` value on `"xxx"` list so that existing alphanumeric order is preserved. `"insort"` yields unpexpected results when called on an unsorted list.

### store

Equivalent to push\_x. This method is provided to help write configuration parser, so the call is the same when dealing with leaf or list values. Prefer `"push_x"` when practical.

- check

  `"yes"`, `"no"` or `"skip"`

- annotation

  list ref of annotation to store with the list values

Example:

```
 $elt->push_x (
    values => [ 'v1','v2' ] ,
    annotation => [ 'v1 comment', 'v2 comment' ],
    check => 'skip'
 );
```

### sort

Sort the content of the list. Can only be called on list of leaf.

### swap

Parameters: `"( ida , idb )"`

Swap 2 elements within the array

### remove

Parameters: `"( idx )"`

Remove an element from the list. Equivalent to `"splice @list,$idx,1"`

### load\_data

Parameters: `"( data => ( ref | scalar ) [, check => ... ] [ , split_reg => $re ] )"`

Clear and load list from data contained in the `"data"` array ref. If a scalar or a hash ref is passed, the list is cleared and the data is stored in the first element of the list. If split\_reg is specified, the scalar is split to load the array.

For instance

```
   $elt->load_data( data => 'foo,bar', split_reg => qr(,) ) ;
```

loads `" [ 'foo','bar']"` in `$elt`

### sort\_algorithm

Returns a sub used to sort the list elements. See "sort" in perlfunc. Used only for list of leaves. This method can be overridden to alter sort order.

### get\_info

Returns a list of information related to the list. See "get\_info" in Config::Model::Value for more details.

## AUTHOR

Dominique Dumont, (ddumont at cpan dot org)

## SEE ALSO

Config::Model::Model,  Config::Model::Instance,  Config::Model::AnyId, Config::Model::HashId, Config::Model::Value

## AUTHOR

Dominique Dumont

## COPYRIGHT AND LICENSE

This software is Copyright (c) 2005-2022 by Dominique Dumont.

This is free software, licensed under:

```
  The GNU Lesser General Public License, Version 2.1, February 1999
```
