---
name: "MIME::Field::ParamVal"
section: "3pm"
platform: "linux"
package: "perl-mime-tools"
version: "5.518-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/MIME::Field::ParamVal"
---

# MIME::Field::ParamVal(3pm)

subclass of Mail::Field, for structured MIME fields

## NAME

MIME::Field::ParamVal - subclass of Mail::Field, for structured MIME fields

## SYNOPSIS

```
    # Create an object for a content-type field:
    $field = new Mail::Field 'Content-type';
    # Set some attributes:
    $field->param('_'        => 'text/html');
    $field->param('charset'  => 'us-ascii');
    $field->param('boundary' => '---ABC---');
    # Same:
    $field->set('_'        => 'text/html',
                'charset'  => 'us-ascii',
                'boundary' => '---ABC---');
    # Get an attribute, or undefined if not present:
    print "no id!"  if defined($field->param('id'));
    # Same, but use empty string for missing values:
    print "no id!"  if ($field->paramstr('id') eq '');
    # Output as string:
    print $field->stringify, "\n";
```

## DESCRIPTION

This is an abstract superclass of most MIME fields.  It handles fields with a general syntax like this:

```
    Content-Type: Message/Partial;
        number=2; total=3;
        id="oc=jpbe0M2Yt4s@thumper.bellcore.com"
```

Comments are supported *between* items, like this:

```
    Content-Type: Message/Partial; (a comment)
        number=2  (another comment) ; (yet another comment) total=3;
        id="oc=jpbe0M2Yt4s@thumper.bellcore.com"
```

## PUBLIC INTERFACE

- set \[\\%PARAMHASH \| KEY=\>VAL,...,KEY=\>VAL\]

  *Instance method.*  Set this field. The paramhash should contain parameter names in *all lowercase*, with the special `"_"` parameter name signifying the "default" (unnamed) parameter for the field:

  ```
     # Set up to be...
     #
     #     Content-type: Message/Partial; number=2; total=3; id="ocj=pbe0M2"
     #
     $conttype->set('_'       => 'Message/Partial',
                    'number'  => 2,
                    'total'   => 3,
                    'id'      => "ocj=pbe0M2");
  ```

  Note that a single argument is taken to be a *reference* to a paramhash, while multiple args are taken to be the elements of the paramhash themselves.

  Supplying undef for a hashref, or an empty set of values, effectively clears the object.

  The self object is returned.

- parse\_params STRING

  *Class/instance utility method.* Extract parameter info from a structured field, and return it as a hash reference.  For example, here is a field with parameters:

  ```
      Content-Type: Message/Partial;
          number=2; total=3;
          id="oc=jpbe0M2Yt4s@thumper.bellcore.com"
  ```

  Here is how you'd extract them:

  ```
      $params = $class->parse_params('content-type');
      if ($$params{'_'} eq 'message/partial') {
          $number = $$params{'number'};
          $total  = $$params{'total'};
          $id     = $$params{'id'};
      }
  ```

  Like field names, parameter names are coerced to lowercase. The special '\_' parameter means the default parameter for the field.

  **NOTE:** This has been provided as a public method to support backwards compatibility, but you probably shouldn't use it.

- parse STRING

  *Class/instance method.* Parse the string into the instance.  Any previous information is wiped. The self object is returned.

  May also be used as a constructor.

- param PARAMNAME,\[VALUE\]

  *Instance method.* Return the given parameter, or undef if it isn't there. With argument, set the parameter to that VALUE. The PARAMNAME is case-insensitive.  A "\_" refers to the "default" parameter.

- paramstr PARAMNAME,\[VALUE\]

  *Instance method.* Like **param()**: return the given parameter, or *empty* if it isn't there. With argument, set the parameter to that VALUE. The PARAMNAME is case-insensitive.  A "\_" refers to the "default" parameter.

- stringify

  *Instance method.* Convert the field to a string, and return it.

- tag

  *Instance method, abstract.* Return the tag for this field.

## SEE ALSO

Mail::Field
