Skip to content

feat(registry): add .perl-version support for perl#9102

Merged
jdx merged 2 commits intojdx:mainfrom
ergofriend:feat/perl-idiomatic-version-file
Apr 16, 2026
Merged

feat(registry): add .perl-version support for perl#9102
jdx merged 2 commits intojdx:mainfrom
ergofriend:feat/perl-idiomatic-version-file

Conversation

@ergofriend
Copy link
Copy Markdown
Contributor

Add .perl-version to the perl registry entry as both detect and idiomatic_files, so that:

  • detect: mise can auto-detect Perl usage in a project (e.g., mise edit)
  • idiomatic_files: mise reads the version from .perl-version when idiomatic_version_file_enable_tools includes "perl"

Motivation

Many Perl projects use .perl-version files (created by plenv) to pin the Perl version, similar to how Node.js projects use .node-version. Currently, mise does not recognize .perl-version, so users must duplicate the version in .mise.toml.

Change

 backends = ["aqua:skaji/relocatable-perl", "asdf:ouest/asdf-perl"]
 description = "self-contained, portable perl binaries"
+detect = [".perl-version"]
+idiomatic_files = [".perl-version"]

Testing

Verified locally in a clean tempdir:

$ mkdir perl-test && cd perl-test
$ echo "5.42.0" > .perl-version
$ cat > mise.toml <<EOF
[settings]
idiomatic_version_file_enable_tools = ["perl"]
EOF
$ mise trust

1. mise config lists .perl-version as a config source

$ mise config
~/.config/mise/config.toml        ...
.../perl-test/.perl-version          perl
.../perl-test/mise.toml              (none)

2. mise ls --current shows the version read from .perl-version

$ mise ls --current | grep perl
perl   5.42.0.0   .../perl-test/.perl-version   5.42.0

3. Changing the version in .perl-version switches the active Perl

$ mise exec -- perl --version | head -2
This is perl 5, version 42, subversion 0 (v5.42.0) built for darwin-2level

$ echo "5.40.0" > .perl-version
$ mise install
...
mise perl@5.40.0.2 ✓ installed

$ mise exec -- perl --version | head -2
This is perl 5, version 40, subversion 0 (v5.40.0) built for darwin-2level

Requires idiomatic_version_file_enable_tools = ["perl"] in settings (same pattern as node, python, ruby).

Add `.perl-version` to the perl registry entry as both `detect` and
`idiomatic_files`, so that mise can auto-detect Perl usage and read
the version from `.perl-version` files.
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request adds support for .perl-version as an idiomatic version file for Perl, updating both the documentation and the registry configuration. A suggestion was made to improve project auto-detection by including additional standard Perl markers such as cpanfile, Makefile.PL, and Build.PL in the detection list.

Comment thread registry/perl.toml
@@ -1,2 +1,4 @@
backends = ["aqua:skaji/relocatable-perl", "asdf:ouest/asdf-perl"]
description = "self-contained, portable perl binaries"
detect = [".perl-version"]
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

To improve the auto-detection of Perl projects (e.g., for mise use or mise edit), consider adding other common Perl project markers to the detect list. Files like cpanfile, Makefile.PL, and Build.PL are standard indicators of a Perl project and would allow mise to proactively suggest Perl when entering such a project directory.

Suggested change
detect = [".perl-version"]
detect = [".perl-version", "cpanfile", "Makefile.PL", "Build.PL"]

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Apr 15, 2026

Greptile Summary

This PR adds .perl-version file support to the perl registry entry, enabling both auto-detection of Perl projects and idiomatic version file reading. The changes follow the established pattern for external-backend tools (e.g., atmos, terraform, packer) that use idiomatic_files in their registry TOML, and the docs table is updated with correct alphabetical ordering.

Confidence Score: 5/5

Safe to merge — minimal, additive change following established registry patterns.

Both changes are small and correct: the registry TOML matches the pattern used by other external-backend tools (atmos, terraform, packer), and the docs table entry is alphabetically ordered. No logic changes, no breaking changes, and the feature was manually verified by the author.

No files require special attention.

Important Files Changed

Filename Overview
registry/perl.toml Adds detect and idiomatic_files for .perl-version, consistent with how other external-backend tools (atmos, terraform, packer, etc.) are configured.
docs/configuration.md Adds perl row to the idiomatic files table in alphabetical order (between packer and pnpm), accurately documenting the new .perl-version support.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Project directory] -->|contains `.perl-version`| B{mise processing}
    B -->|detect| C[Auto-detect Perl tool usage\ne.g. mise edit]
    B -->|idiomatic_files\n+ setting enabled| D[Read version from `.perl-version`]
    D --> E[Set active Perl version]
    C --> F[Suggest Perl in mise config]

    style A fill:#f5f5f5
    style E fill:#d4edda
    style F fill:#d4edda
Loading

Reviews (2): Last reviewed commit: "Merge branch 'main' into feat/perl-idiom..." | Re-trigger Greptile

@jdx jdx merged commit 34f2a5c into jdx:main Apr 16, 2026
35 checks passed
mise-en-dev added a commit that referenced this pull request Apr 17, 2026
### 🚀 Features

- **(registry)** add .perl-version support for perl by @ergofriend in
[#9102](#9102)
- **(task)** add Tera template support for inline table run tasks by
@iamkroot in [#9079](#9079)

### 🐛 Bug Fixes

- **(env)** use runtime symlink paths for fuzzy versions by @jdx in
[#9143](#9143)
- **(github)** use full token resolution chain for attestation
verification by @jdx in [#9154](#9154)
- **(go)** Remove install-time version override for subpath packages by
@c22 in [#9135](#9135)
- **(npm)** respect install_before when resolving dist-tag versions by
@webkaz in [#9145](#9145)
- **(self-update)** ensure subcommand exists by @salim-b in
[#9144](#9144)
- **(task)** show available tasks when run target missing by @jdx in
[#9141](#9141)
- **(task)** forward task help args and add raw_args by @jdx in
[#9118](#9118)
- **(task)** remove red/yellow from task prefix colors by
@lechuckcaptain in [#8782](#8782)
- **(task)** merge TOML task block into same-named file task and surface
resolved dir by @jdx in [#9147](#9147)
- **(toolset)** round-trip serialized tool options by @atharvasingh7007
in [#9124](#9124)
- **(vfox)** fallback to absolute bin path if env_keys not set by
@80avin in [#9151](#9151)

### 📚 Documentation

- make agent guide wording generic by @jdx in
[#9142](#9142)

### 📦️ Dependency Updates

- update ghcr.io/jdx/mise:deb docker digest to e019cb9 by @renovate[bot]
in [#9160](#9160)
- update ghcr.io/jdx/mise:copr docker digest to 8d25608 by
@renovate[bot] in [#9159](#9159)
- update ghcr.io/jdx/mise:rpm docker digest to 22e52da by @renovate[bot]
in [#9161](#9161)
- update ghcr.io/jdx/mise:alpine docker digest to a3da97c by
@renovate[bot] in [#9158](#9158)
- update rust docker digest to 4a2ef38 by @renovate[bot] in
[#9162](#9162)
- update ubuntu:24.04 docker digest to c4a8d55 by @renovate[bot] in
[#9164](#9164)
- update rust crate aws-lc-rs to v1.16.3 by @renovate[bot] in
[#9165](#9165)
- update ubuntu docker tag to resolute-20260413 by @renovate[bot] in
[#9169](#9169)
- update rust crate clap to v4.6.1 by @renovate[bot] in
[#9166](#9166)
- update taiki-e/install-action digest to a2352fc by @renovate[bot] in
[#9163](#9163)
- update rust crate ctor to 0.10 by @renovate[bot] in
[#9170](#9170)
- update rust crate tokio to v1.52.1 by @renovate[bot] in
[#9167](#9167)
- update rust crate rmcp-macros to 0.17 by @renovate[bot] in
[#9173](#9173)
- update rust crate signal-hook to 0.4 by @renovate[bot] in
[#9177](#9177)
- update rust crate zipsign-api to 0.2 by @renovate[bot] in
[#9180](#9180)
- update rust crate toml_edit to 0.25 by @renovate[bot] in
[#9179](#9179)
- update rust crate strum to 0.28 by @renovate[bot] in
[#9178](#9178)

### 📦 Registry

- add ibmcloud by @dnwe in
[#9139](#9139)
- add rush by @jdx in [#9146](#9146)

### New Contributors

- @80avin made their first contribution in
[#9151](#9151)
- @atharvasingh7007 made their first contribution in
[#9124](#9124)
- @lechuckcaptain made their first contribution in
[#8782](#8782)
- @ergofriend made their first contribution in
[#9102](#9102)
- @dnwe made their first contribution in
[#9139](#9139)

## 📦 Aqua Registry Updates

#### New Packages (3)

-
[`controlplaneio-fluxcd/flux-operator`](https://github.com/controlplaneio-fluxcd/flux-operator)
-
[`dependency-check/DependencyCheck`](https://github.com/dependency-check/DependencyCheck)
- [`kiro.dev/kiro-cli`](https://github.com/kiro.dev/kiro-cli)

#### Updated Packages (2)

-
[`jreleaser/jreleaser/standalone`](https://github.com/jreleaser/jreleaser/standalone)
- [`sigstore/cosign`](https://github.com/sigstore/cosign)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants