---
name: "Test2::Harness::Settings::Prefix"
section: "3pm"
platform: "linux"
package: "libtest2-harness-perl"
version: "1.000158-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Test2::Harness::Settings::Prefix"
---

# Test2::Harness::Settings::Prefix(3pm)

Abstraction of a settings category, aka prefix.

## NAME

Test2::Harness::Settings::Prefix - Abstraction of a settings category, aka prefix.

## DESCRIPTION

This class represents a settings category (prefix).

## SYNOPSIS

```
    # You will rarely if ever need to construct settings yourself, usually a
    # component of Test2::Harness will expose them to you.
    my $settings = $thing->settings;
    my $display = $settings->display;
    # Once you have your prefix you can read data from it:
    my $verbose = $display->verbose;
    # If you dislike autoload methods you can use the 'field' method:
    my $verbose = $display->field('verbose');
    # You can also change values:
    $display->field(verbose => 1);
    # You can also use the autoloaded method as an lvalue, but this breaks on
    # perls older than 5.16, so it is not used internally, and you should only
    # use it if you know you will never need an older perl:
    $display->verbose = 1;
```

## METHODS

Note that any field that does not conflict with the predefined methods can be accessed via AUTOLOAD generating the methods as needed.

- $scalar\_ref = $prefix-\>vivify\_field($field\_name)

  This will force a field into existance. It returns a scalar reference to the field which can be used to set the value:

  ```
      my $vref = $display->vivify_field('verbose');    # Create or find field
      ${$vref} = 1;                                    # set verbosity to 1
  ```

- $bool = $prefix-\>check\_field($field\_name)

  Check if a field is defined or not.

- $val = $prefix-\>field($field\_name)

  - $val = $prefix-\>$field\_name

  - $prefix-\>field($field\_name, $val)

  - $prefix-\>$field\_name = $val

  Retrieve or set the value of the specified field. This will throw an exception if the field does not exist.

  **Note**: The lvalue form `"$prefix->$field_name = $val"` breaks on perls older then 5.16.

- $thing = $prefix-\>build($class, @args)

  This will create an instance of `$class` passing the key/value pairs from the prefix as arguments. Additional arguments can be provided in `@args`.

- $hashref = $prefix-\>**TO\_JSON()**

  This method allows settings to be serialized into JSON.

## SOURCE

The source code repository for Test2-Harness can be found at *http://github.com/Test-More/Test2-Harness/*.

## MAINTAINERS

- Chad Granum \<exodist@cpan.org\>

  ## AUTHORS

- Chad Granum \<exodist@cpan.org\>

  ## COPYRIGHT

Copyright 2020 Chad Granum \<exodist7@gmail.com\>.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

See *http://dev.perl.org/licenses/*
