Dpkg::Control::FieldsCore(3perl) libdpkg-perl Dpkg::Control::FieldsCore(3perl)

# [NAME](#NAME)

Dpkg::Control::FieldsCore - manage (list of official) control fields

# [DESCRIPTION](#DESCRIPTION)

The modules contains a list of field names with associated meta-data explaining in which type of control information they are allowed. The types are the CTRL\_* constants exported by Dpkg::Control.

# [FUNCTIONS](#FUNCTIONS)

$field = field\_capitalize($field\_name)

Returns the field name properly capitalized. All characters are lowercase, except the first of each word (words are separated by a hyphen in field names).

$bool = field\_is\_official($fname)

Returns true if the field is official and known.

$bool = field\_is\_allowed\_in($fname, @types)

Returns [true (1)](/man/os/dpkg/true.1) if the field $fname is allowed in all the types listed in the list. Note that you can use type sets instead of individual types (ex: CTRL\_FILE\_CHANGES | CTRL\_CHANGELOG).

field\_allowed\_in(A|B, C) returns true only if the field is allowed in C and either A or B.

Undef is returned for non-official fields.

$new\_field = field\_transfer\_single($from, $to, $field)

If appropriate, copy the value of the field named $field taken from the $from Dpkg::Control object to the $to Dpkg::Control object.

Official fields are copied only if the field is allowed in both types of objects. Custom fields are treated in a specific manner. When the target is not among CTRL\_DSC, CTRL\_DEB or CTRL\_FILE\_CHANGES, then they are always copied as is (the X- prefix is kept). Otherwise they are not copied except if the target object matches the target destination encoded in the field name. The initial X denoting custom fields can be followed by one or more letters among "S" (Source: corresponds to CTRL\_DSC), "B" (Binary: corresponds to CTRL\_DEB) or "C" (Changes: corresponds to CTRL\_FILE\_CHANGES).

Returns undef if nothing has been copied or the name of the new field added to $to otherwise.

@field\_list = field\_transfer\_all($from, $to)

Transfer all appropriate fields from $from to $to. Calls **field\_transfer\_single()** on all fields available in $from.

Returns the list of fields that have been added to $to.

@field\_list = field\_ordered\_list($type)

Returns an ordered list of fields for a given type of control information. This list can be used to output the fields in a predictable order. The list might be empty for types where the order does not matter much.

$email = field\_parse\_maintainer($ctrl)

Parses the "Maintainer" field from the Dpkg::Control $ctrl object, and returns a Dpkg::Email::Address object.

$email\_list = field\_parse\_uploaders($ctrl)

Parses the "Uploaders" field from the Dpkg::Control $ctrl object, and returns a Dpkg::Email::AddressList object, containing the list of Dpkg::Email::Address for each uploader.

($source, $version) = field\_parse\_binary\_source($ctrl)

Parse the **Source** field in a binary package control stanza. The field contains the source package name where it was built from, and optionally a space and the source version enclosed in parenthesis if it is different from the binary version.

Returns a list with the $source name, and the source $version, or undef or an empty list when $ctrl does not contain a binary package control stanza. Neither $source nor $version are validated, but that can be done with **Dpkg::Package::pkg\_name\_is\_invalid()** and **Dpkg::Version::version\_check()**.

@field\_list = **field\_list\_src\_dep()**

List of fields that contains dependencies-like information in a source Debian package.

@field\_list = **field\_list\_pkg\_dep()**

List of fields that contains dependencies-like information in a binary Debian package. The fields that express real dependencies are sorted from the stronger to the weaker.

$dep\_type = field\_get\_dep\_type($field)

Return the type of the dependency expressed by the given field. Can either be "normal" for a real dependency field (Pre-Depends, Depends, ...) or "union" for other relation fields sharing the same syntax (Conflicts, Breaks, ...). Returns undef for fields which are not dependencies.

$sep\_type = field\_get\_sep\_type($field)

Return the type of the field value separator. Can be one of FIELD\_SEP\_UNKNOWN, FIELD\_SEP\_SPACE, FIELD\_SEP\_COMMA or FIELD\_SEP\_LINE.

$value = field\_get\_default\_value($field)

Return the default value (if any) for the field. If there is no default value then it returns "undef".

[field\_register($field, $allowed\_types, %opts)](#field_register%28$field,)

Register a new field as being allowed in control information of specified types. %opts is optional.

$bool = field\_insert\_after($type, $ref, @fields)

Place field after another one ($ref) in output of control information of type $type.

Return true if the field was inserted, otherwise false.

$bool = field\_insert\_before($type, $ref, @fields)

Place field before another one ($ref) in output of control information of type $type.

Return true if the field was inserted, otherwise false.

# [CHANGES](#CHANGES)

## [Version 1.05 (dpkg 1.23.4)](#Version_1.05_%28dpkg_1.23.4%29)

New functions: **field\_parse\_maintainer()**, **field\_parse\_uploaders()**.

## [Version 1.04 (dpkg 1.23.0)](#Version_1.04_%28dpkg_1.23.0%29)

Remove argument: **field\_transfer\_single()** implicit argument usage.

## [Version 1.03 (dpkg 1.22.12)](#Version_1.03_%28dpkg_1.22.12%29)

New function: **field\_get\_default\_value()**.

## [Version 1.02 (dpkg 1.22.0)](#Version_1.02_%28dpkg_1.22.0%29)

Deprecate argument: **field\_transfer\_single()** implicit argument usage.

## [Version 1.01 (dpkg 1.21.0)](#Version_1.01_%28dpkg_1.21.0%29)

New function: **field\_parse\_binary\_source()**.

## [Version 1.00 (dpkg 1.17.0)](#Version_1.00_%28dpkg_1.17.0%29)

Mark the module as public.

2026-09-09 1.23.11-dirty

---

Document: Dpkg::Control::FieldsCore(3perl) from dpkg 1.23.11-r3 (Chainguard OS)
Source: https://git.dpkg.org/git/dpkg/dpkg.git
