---
name: "Mojo::Parameters"
section: "3pm"
platform: "linux"
package: "libmojolicious-perl"
version: "9.39+dfsg-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Mojo::Parameters"
---

# Mojo::Parameters(3pm)

Parameters

## NAME

Mojo::Parameters - Parameters

## SYNOPSIS

```
  use Mojo::Parameters;
  # Parse
  my $params = Mojo::Parameters->new('foo=bar&baz=23');
  say $params->param('baz');
  # Build
  my $params = Mojo::Parameters->new(foo => 'bar', baz => 23);
  push @$params, i => '♥ mojolicious';
  say "$params";
```

## DESCRIPTION

Mojo::Parameters is a container for form parameters used by Mojo::URL, based on RFC 3986 \<https://tools.ietf.org/html/rfc3986\> and the HTML Living Standard \<https://html.spec.whatwg.org\>.

## ATTRIBUTES

Mojo::Parameters implements the following attributes.

### charset

```
  my $charset = $params->charset;
  $params     = $params->charset('UTF-8');
```

Charset used for encoding and decoding parameters, defaults to `"UTF-8"`.

```
  # Disable encoding and decoding
  $params->charset(undef);
```

## METHODS

Mojo::Parameters inherits all methods from Mojo::Base and implements the following new ones.

### append

```
  $params = $params->append(foo => 'ba&r');
  $params = $params->append(foo => ['ba&r', 'baz']);
  $params = $params->append(foo => ['bar', 'baz'], bar => 23);
  $params = $params->append(Mojo::Parameters->new);
```

Append parameters. Note that this method will normalize the parameters.

```
  # "foo=bar&foo=baz"
  Mojo::Parameters->new('foo=bar')->append(Mojo::Parameters->new('foo=baz'));
  # "foo=bar&foo=baz"
  Mojo::Parameters->new('foo=bar')->append(foo => 'baz');
  # "foo=bar&foo=baz&foo=yada"
  Mojo::Parameters->new('foo=bar')->append(foo => ['baz', 'yada']);
  # "foo=bar&foo=baz&foo=yada&bar=23"
  Mojo::Parameters->new('foo=bar')->append(foo => ['baz', 'yada'], bar => 23);
```

### clone

```
  my $params2 = $params->clone;
```

Return a new Mojo::Parameters object cloned from these parameters.

### every\_param

```
  my $values = $params->every_param('foo');
```

Similar to "param", but returns all values sharing the same name as an array reference. Note that this method will normalize the parameters.

```
  # Get first value
  say $params->every_param('foo')->[0];
```

### merge

```
  $params = $params->merge(foo => 'ba&r');
  $params = $params->merge(foo => ['ba&r', 'baz']);
  $params = $params->merge(foo => ['bar', 'baz'], bar => 23);
  $params = $params->merge(Mojo::Parameters->new);
```

Merge parameters. Note that this method will normalize the parameters.

```
  # "foo=baz"
  Mojo::Parameters->new('foo=bar')->merge(Mojo::Parameters->new('foo=baz'));
  # "yada=yada&foo=baz"
  Mojo::Parameters->new('foo=bar&yada=yada')->merge(foo => 'baz');
  # "yada=yada"
  Mojo::Parameters->new('foo=bar&yada=yada')->merge(foo => undef);
```

### names

```
  my $names = $params->names;
```

Return an array reference with all parameter names.

```
  # Names of all parameters
  say for @{$params->names};
```

### new

```
  my $params = Mojo::Parameters->new;
  my $params = Mojo::Parameters->new('foo=b%3Bar&baz=23');
  my $params = Mojo::Parameters->new(foo => 'b&ar');
  my $params = Mojo::Parameters->new(foo => ['ba&r', 'baz']);
  my $params = Mojo::Parameters->new(foo => ['bar', 'baz'], bar => 23);
```

Construct a new Mojo::Parameters object and "parse" parameters if necessary.

### pairs

```
  my $array = $params->pairs;
  $params   = $params->pairs([foo => 'b&ar', baz => 23]);
```

Parsed parameter pairs. Note that this method will normalize the parameters.

```
  # Remove all parameters
  $params->pairs([]);
```

### param

```
  my $value = $params->param('foo');
  $params   = $params->param(foo => 'ba&r');
  $params   = $params->param(foo => qw(ba&r baz));
  $params   = $params->param(foo => ['ba;r', 'baz']);
```

Access parameter values. If there are multiple values sharing the same name, and you want to access more than just the last one, you can use "every\_param". Note that this method will normalize the parameters.

### parse

```
  $params = $params->parse('foo=b%3Bar&baz=23');
```

Parse parameters.

### remove

```
  $params = $params->remove('foo');
```

Remove parameters. Note that this method will normalize the parameters.

```
  # "bar=yada"
  Mojo::Parameters->new('foo=bar&foo=baz&bar=yada')->remove('foo');
```

### to\_hash

```
  my $hash = $params->to_hash;
```

Turn parameters into a hash reference. Note that this method will normalize the parameters.

```
  # "baz"
  Mojo::Parameters->new('foo=bar&foo=baz')->to_hash->{foo}[1];
```

### to\_string

```
  my $str = $params->to_string;
```

Turn parameters into a string.

```
  # "foo=bar&baz=23"
  Mojo::Parameters->new->pairs([foo => 'bar', baz => 23])->to_string;
```

## OPERATORS

Mojo::Parameters overloads the following operators.

### array

```
  my @pairs = @$params;
```

Alias for "pairs". Note that this will normalize the parameters.

```
  say $params->[0];
  say for @$params;
```

### bool

```
  my $bool = !!$params;
```

Always true.

### stringify

```
  my $str = "$params";
```

Alias for "to\_string".

## SEE ALSO

Mojolicious, Mojolicious::Guides, \<https://mojolicious.org\>.
