---
name: "Debian::Control::Stanza"
section: "3pm"
platform: "linux"
package: "libdebian-source-perl"
version: "0.128"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Debian::Control::Stanza"
---

# Debian::Control::Stanza(3pm)

single stanza of Debian source package control file

## NAME

Debian::Control::Stanza - single stanza of Debian source package control file

## SYNOPSIS

```
    package Binary;
    use base 'Debian::Control::Stanza';
    use constant fields => qw( Package Depends Conflicts );
    1;
```

## DESCRIPTION

Debian::Control::Stanza is the base class for Debian::Control::Stanza::Source and Debian::Control::Stanza::Binary classes.

## FIELDS

Stanza fields are to be defined in the class method *fields*. Typically this can be done like:

```
    use constant fields => qw( Foo Bar Baz );
```

Fields that are to contain dependency lists (as per "is\_dependency\_list" method below) are automatically converted to instances of the Debian::Dependencies class.

### User-defined fields

User-defined fields are supported. These start with `"X"`, optionally followed by `"S"`, `"B"` or `"C"`, then `"_"`, capital letter and other letters and digits.

Examples: `"X_Moon_Phase"`, `"XS_Hemisphere"`.

See \<https://www.debian.org/doc/debian-policy/#user-defined-fields\>.

## CONSTRUCTOR

- new

  - new( { field =\> value, ... } )

  Creates a new Debian::Control::Stanza object and optionally initializes it with the supplied data. The object is hashref based and tied to Tie::IxHash.

  You may use dashes for initial field names, but these will be converted to underscores:

  ```
      my $s = Debian::Control::Stanza::Source( {Build-Depends => "perl"} );
      print $s->Build_Depends;
  ```

## METHODS

- is\_dependency\_list($field)

  Returns true if *$field* contains a list of dependencies. By default returns true for the following fields:

  - Build\_Depends

    - Build\_Depends\_Indep

    - Build\_Depends\_Arch

    - Build\_Conflicts

    - Build\_Conflicts\_Indep

    - Build\_Conflicts\_Arch

    - Depends

    - Conflicts

    - Enhances

    - Replaces

    - Breaks

    - Pre\_Depends

    - Recommends

    - Suggests

    - is\_comma\_separated($field)

  Returns true if the given field is to contain a comma-separated list of values. This is used in stringification, when considering where to wrap long lines.

  By default the following fields are flagged to contain such lists:

  - All fields that contain dependencies (see above)

    - Uploaders

    - Provides

    - looks\_like\_an\_x\_field($field)

  Returns true if **$field** is considered appropriate to name a user-defined field.

- get($field)

  Overrides the default get method from Class::Accessor with Tie::IxHash's FETCH.

- set( $field, $value )

  Overrides the default set method from Class::Accessor with Tie::IxHash's STORE. In the process, converts *$value* to an instance of the Debian::Dependencies class if *$field* is to contain dependency list (as determined by the "is\_dependency\_list" method).

- as\_string(\[$width\])

  Returns a string representation of the object. Ready to be printed into a real *debian/control* file. Used as a stringification operator.

  Fields that are comma-separated use one line per item, except if they are like `"${some:Field}"`, in which case they are wrapped at *$width*th column. *$width* defaults to 80.

## COPYRIGHT & LICENSE

Copyright (C) 2009, 2017 Damyan Ivanov dmn@debian.org

Copyright (C) 2020 gregor herrmann gregoa@debian.org

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
