# Perl (/pipeline-sdk/reference/toolchains/perl)



{/* Generated by docs-site/scripts/generate-dsl-docs.ts — do not edit. */}

## `perl` [#perl]

Callable singleton for the Perl toolchain — access as `hm.perl`.

Call directly to construct a `PerlProject`, or use the bare-form
action methods (`perl.test()`, `perl.lint()`) for a one-shot leaf.

```python
perl(*, path='.', image=None, base=None) -> PerlProject
```

| Parameter      | Type           | Default | Description                                                |
| -------------- | -------------- | ------- | ---------------------------------------------------------- |
| `path`         | `str`          | `'.'`   | Path to the Perl project root (must contain a `cpanfile`). |
| `image`        | `str \| None`  | `None`  | Local-mode Docker base image override.                     |
| `base`         | `Step \| None` | `None`  | Existing `Step` to attach to instead of emitting a fresh   |
| apt-base step. |                |         |                                                            |

**Returns** `PerlProject` — A `PerlProject` whose `installed` step is the cpanm-deps step.

### `perl.lint()` [#perllint]

```python
lint(**kw) -> Step
```

| Parameter | Type  | Default | Description |
| --------- | ----- | ------- | ----------- |
| `kw`      | `Any` | `{}`    | —           |

**Returns** `Step`

### `perl.test()` [#perltest]

```python
test(**kw) -> Step
```

| Parameter | Type  | Default | Description |
| --------- | ----- | ------- | ----------- |
| `kw`      | `Any` | `{}`    | —           |

**Returns** `Step`

## `PerlEntry` [#perlentry]

Callable singleton for the Perl toolchain — access as `hm.perl`.

Call directly to construct a `PerlProject`, or use the bare-form
action methods (`perl.test()`, `perl.lint()`) for a one-shot leaf.

### `PerlEntry.lint()` [#perlentrylint]

```python
lint(**kw) -> Step
```

| Parameter | Type  | Default | Description |
| --------- | ----- | ------- | ----------- |
| `kw`      | `Any` | `{}`    | —           |

**Returns** `Step`

### `PerlEntry.test()` [#perlentrytest]

```python
test(**kw) -> Step
```

| Parameter | Type  | Default | Description |
| --------- | ----- | ------- | ----------- |
| `kw`      | `Any` | `{}`    | —           |

**Returns** `Step`

## `PerlProject` [#perlproject]

Perl project install chain — constructed via `hm.perl()`.

`installed` is the cpanm-deps step. Action methods (`test`,
`lint`) attach leaves to `installed`.

### Fields [#fields]

| Field       | Type   | Default    |
| ----------- | ------ | ---------- |
| `path`      | `str`  | *required* |
| `installed` | `Step` | *required* |

### `PerlProject.lint()` [#perlprojectlint]

```python
lint(**kw) -> Step
```

| Parameter | Type  | Default | Description |
| --------- | ----- | ------- | ----------- |
| `kw`      | `Any` | `{}`    | —           |

**Returns** `Step`

### `PerlProject.test()` [#perlprojecttest]

```python
test(**kw) -> Step
```

| Parameter | Type  | Default | Description |
| --------- | ----- | ------- | ----------- |
| `kw`      | `Any` | `{}`    | —           |

**Returns** `Step`
