---
name: "SQL::Translator::Role::ListAttr"
section: "3pm"
platform: "linux"
package: "libsql-translator-perl"
version: "1.66-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SQL::Translator::Role::ListAttr"
---

# SQL::Translator::Role::ListAttr(3pm)

context-sensitive list attributes

## NAME

SQL::Translator::Role::ListAttr - context-sensitive list attributes

## SYNOPSIS

```
    package Foo;
        use Moo;
        use SQL::Translator::Role::ListAttr;
        with ListAttr foo => ( uniq => 1, append => 1 );
```

## DESCRIPTION

This package provides a variable Moo::Role for context-sensitive list attributes.

## FUNCTIONS

### ListAttr $name =\> %parameters;

Returns a Moo::Role providing an arrayref attribute named `$name`, and wrapping the accessor to provide context-sensitivity both for setting and getting.  If no `"builder"` or `"default"` is provided, the default value is the empty list.

On setting, the arguments are parsed using "parse\_list\_arg" in SQL::Translator::Utils, and the accessor will return an array reference or a list, depending on context.

*Parameters*

- append

  If true, the setter will append arguments to the existing ones, rather than replacing them.

- uniq

  If true, duplicate items will be removed, keeping the first one seen.

- may\_throw

  If accessing the attribute might throw an exception (e.g. from a `"builder"` or `"isa"` check), this should be set to make the accessor store the exception using SQL::Translator::Role::Error and return undef.

- undef\_if\_empty

  If true, and the list is empty, the accessor will return `"undef"` instead of a reference to an empty in scalar context.

Unknown parameters are passed through to the has call for the attribute.

## SEE ALSO

- SQL::Translator::Utils

  - SQL::Translator::Role::Error
