tree-sitter-perl
A tree-sitter grammar for Perl. Maintained at https://github.com/tree-sitter-perl/tree-sitter-perl
Installation
Package managers
# npm
npm install tree-sitter-perl
# cargo
cargo add ts-parser-perl
# pip
pip install tree-sitter-perl
Neovim
A version of this parser is part of the nvim-treesitter plugin.
To use a version that has not yet made it into nvim-treesitter:
local parser_config = require "nvim-treesitter.parsers".get_parser_configs()
parser_config.perl = {
install_info = {
url = 'https://github.com/tree-sitter-perl/tree-sitter-perl',
revision = 'release',
files = { "src/parser.c", "src/scanner.c" },
}
}
Then :TSInstall perl. Copy the queries from the queries directory into
queries/perl somewhere in your runtimepath.
Emacs
As of Emacs 29.1, if you have the tree-sitter library installed:
(setq treesit-language-source-alist
'((perl . ("https://github.com/tree-sitter-perl/tree-sitter-perl" "release"))))
(treesit-install-language-grammar 'perl)
From source
Pre-built files are on the release branch. We don't store generated files on
master because the 18MB parser.c makes branch switching painful.
Developing
Prerequisites
Install the tree-sitter CLI.
Node.js v20+ is needed for tree-sitter generate (the grammar uses advanced
regex features for unicode support).
Building
tree-sitter generate # generates src/parser.c from grammar.js
tree-sitter test # runs the test corpus
cargo test # runs the Rust binding tests
If you aren't changing grammar.js, you can generate from the checked-in
src/grammar.json with just the tree-sitter CLI (no Node needed):
tree-sitter generate src/grammar.json
Releasing
script/schema-diff # what changed in the public node schema, and the bump it implies
script/bump-version 2.0.0 # syncs version across all four manifests
git add -A && git commit # NOTE: no -m — see below
git tag v2.0.0
git push origin master v2.0.0 # tag push triggers publish to npm, crates.io, PyPI, GitHub
The tag commit's message body becomes the GitHub release notes — publish.yml
extracts it with git log -1 --format=%b. Committing with -m 'chore: bump …'
alone therefore publishes a release with no notes; write the notes into the
commit body. CI fails the publish if that body is empty.
script/bump-version --check verifies every manifest agrees; CI runs it on each
pull request.
Tests
Tests are in test/corpus/. Reference:
https://tree-sitter.github.io/tree-sitter/creating-parsers#command-test
Contributing
Pull requests welcome! The grammar is in grammar.js. For subtle points,
please leave comments — the extra bytes go a long way.
Supporting scripts
unicode_ranges.pl generates unicode ranges for the C and JS sides of the
parser. Dependencies are in the cpanfile. Only needed if working on unicode
identifiers.
Metadata
Release files for tree-sitter-perl 2.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tree_sitter_perl-2.0.0.tar.gz | 1.7 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| tree_sitter_perl-2.0.0-cp39-abi3-win_amd64.whl | CPython 3.9 | abi3 | Windows x86-64 | Details |
| tree_sitter_perl-2.0.0-cp39-abi3-musllinux_1_2_x86_64.whl | CPython 3.9 | abi3 | Linux musl 1.2+ x86-64 | Details |
| tree_sitter_perl-2.0.0-cp39-abi3-musllinux_1_2_aarch64.whl | CPython 3.9 | abi3 | Linux musl 1.2+ ARM64 | Details |
| tree_sitter_perl-2.0.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | CPython 3.9 | abi3 | Linux glibc 2.17+ ARM64 | Details |
| tree_sitter_perl-2.0.0-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.9 | abi3 | Linux glibc 2.17+ x86-64, Linux glibc 2.5+ x86-64 | Details |
| tree_sitter_perl-2.0.0-cp39-abi3-macosx_11_0_arm64.whl | CPython 3.9 | abi3 | macOS 11.0+ ARM64 | Details |
Total release size: 3.9 MB
Release files / tree_sitter_perl-2.0.0.tar.gz
| Download URL | tree_sitter_perl-2.0.0.tar.gz |
|---|---|
| Size | 1.7 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
41419edfd905b181d2490b9194e76ee846e49726650f115bafcaa1e1a16c3c8c
|
|
BLAKE2b-256 checksum How to use checksums |
90aa671028366bb7bad7ca1b2a7d8fe7fb4e2aae20d41fd7f3c802b3d1cb8610
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.
Transparency logRelease files / tree_sitter_perl-2.0.0-cp39-abi3-win_amd64.whl
| Download URL | tree_sitter_perl-2.0.0-cp39-abi3-win_amd64.whl |
|---|---|
| Size | 319.8 kB |
| Tags | CPython 3.9 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
7542b8ed26b8c3071a1528c7b8122214a17c6558f84277e9cb6aca8249ec7286
|
|
BLAKE2b-256 checksum How to use checksums |
ee575fe5eb5dd94231bd9592f7c4c636fbdb34dc6c880e2424c397cd3bdc32ce
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.
Transparency logRelease files / tree_sitter_perl-2.0.0-cp39-abi3-musllinux_1_2_x86_64.whl
| Download URL | tree_sitter_perl-2.0.0-cp39-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 372.6 kB |
| Tags | CPython 3.9 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
3f25665b2bdd2d106f19592ffceb9f39de74d144fff4865c3b3fe084901185d0
|
|
BLAKE2b-256 checksum How to use checksums |
3f896b96587288fd2976565ea308fd8aa81078d6ed36ca6202fda37a9a704c79
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.
Transparency logRelease files / tree_sitter_perl-2.0.0-cp39-abi3-musllinux_1_2_aarch64.whl
| Download URL | tree_sitter_perl-2.0.0-cp39-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 370.3 kB |
| Tags | CPython 3.9 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
65a12198aec6aeed6928a4cd73cf099a8e0acee5de3ef95798159a891302f835
|
|
BLAKE2b-256 checksum How to use checksums |
3db53a9fcafee55954f631cfa2e2b909dafaa533265e4a14fbeeec5b56044e13
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.
Transparency logRelease files / tree_sitter_perl-2.0.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | tree_sitter_perl-2.0.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 408.2 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
17bfb0f99bcbfaa040e76a853d48a8d5ecc7c965ea6119b5b2d9e17535500ea5
|
|
BLAKE2b-256 checksum How to use checksums |
5ccd0caf44e896910241ec53367df45cbeaec1fb8eef7c83a905cb83fde5d787
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.
Transparency logRelease files / tree_sitter_perl-2.0.0-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | tree_sitter_perl-2.0.0-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 384.6 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 Linux glibc 2.5+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
bf552ddc93f3a01567bcdfe385b5e5e5c2fca27094a44dca7acdc3e9d462cbcf
|
|
BLAKE2b-256 checksum How to use checksums |
b9116ea3a9e705b2dff3c60b0e582de8af579be4d94e42ad567157db329b4495
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.
Transparency logRelease files / tree_sitter_perl-2.0.0-cp39-abi3-macosx_11_0_arm64.whl
| Download URL | tree_sitter_perl-2.0.0-cp39-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 346.9 kB |
| Tags | CPython 3.9 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
3ed9dfef4495e777bd0dffd0e0b42c284be9df56c06230232174c4476be8d122
|
|
BLAKE2b-256 checksum How to use checksums |
6438d68da591d046431409f6369d26e4b76955d5d9c98b45f90a9325b976e3b0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.
Transparency log