.pm

5 claimants 0 primary 5 secondary secondary-only

SWH popularity

From the SWH-MSR-ARV dataset (Desmazières, Di Cosmo, Lorentz, MSR 2025; file nb_extensions_alphanum.csv) — one row per (ext, year) in the full SWH archive. Case-aggregated. citation.

10.0M
total occurrences
1.3M
since 2019 (12.8%)
1970–2023
years active

Case variants in archive: .pm (10.0M), .PM (1.1K), .Pm (9) — aggregated above.

Confirm or correct this extension

Existing claims are only secondary or weakly-attested. A confirmation (or correction) would strengthen the catalog. Vocabulary reference: docs/extension_labels.md.

Quick pick — proposed PLs. Tick one or more to auto-fill the label as pl/<id>. Each chip is a PL that upstream sources or Linguist heuristics already suggest for .pm. Multi-tick for a polysemous extension.
— or, if the button is blocked, use the link just below:
(fill the form to enable this link)
What happens after I submit?
  1. A new GitHub issue is opened in this repo with your form contents in a structured YAML block and the label ext-review. Your GitHub login becomes the annotator; the issue's created_at is the submission timestamp.
  2. A curator script (tools/process_extension_labels.py) fetches all ext-review issues and writes their parsed contents into data/derived/extension_labels.csv with curator_status="new". Until this script runs, your submission lives only as the GitHub issue.
  3. Your submission shows up on the curator triage page (/review/curator/) under "new". Maintainers review the issue (comment, ask for clarification, accept or reject) and edit extension_labels.csv to set curator_status to accepted.
  4. For pl/<id> labels, build_pl_taxonomy.py promotes accepted labels into ext_claim.csv with source="manual_review:<your-login>" and strength="proposed". The next site rebuild then shows your claim on this extension's page and on the language's page.
  5. Friendly-name + reference-URL labels (e.g. binary:image for .png) are not promoted into ext_claim.csv (they aren't PL claims) but are surfaced on this page's "Prior labels" table so anyone landing here sees them next to the auto-detected category.

In short: submitting opens an issue (provenance), and a small ingestion pipeline turns issues into rows the site renders. The loop is currently manual (the curator script must be run by a maintainer); GitHub Actions could automate it on each new issue.

Claimants (9)

Languages that list .pm among their extensions. Strength reflects whether the upstream source treated it as their primary extension.
LanguageSourceStrength
Perllinguistsecondary
Perlpygmentssecondary
Perl 6linguistsecondary
Perl 6pygmentssecondary
Promelapygmentssecondary
Raku (programming language)pygmentssecondary
x-pixmaplinguistsecondary
x-pixmappygmentssecondary
Perlwikidatadeprecated

Wikidata says… (6)

File formats, image formats, audio codecs and other non-PL entities that claim .pm on Wikidata (property P1195) or in the Wikipedia infobox. Source: data/derived/external_extension_index.csv. Click Use as new PL on any row to open the Add-PL form pre-filled with that entry's name, Wikipedia/Wikidata URL, and this extension — one submission creates the PL + claim.
Right entry isn't listed? Add manually ↗
FormatClass (Wikidata P31)Suggested labelMIMENotesAction
PM Q28207044
file format
file formatUse as new PL ↗
Perl module Q1165116
component of software for the Perl programming language
file format; software categoryUse as new PL ↗
GHS Part Maker Q28919168
file format
file formatUse as new PL ↗

Disambiguation rules (3)

Linguist heuristics that decide, by content, which language a .pm file actually is.
RulePredictsKindPredicates (truncated)
h/linguist/.pm/0Perlpredicates[{"kind": "not_any", "regexes": ["^\\s*use\\s+v6\\b"]}, {"kind": "any", "regexes": ["\\buse\\s+(?:strict\\b|v?5\\b)", "^\\s*use\\s+(?:constant|overload)\\b", "^\\s*(?:\\*|(?:our\\s*)?@)EXPORT\\s*=", "
h/linguist/.pm/1Perl 6predicates[{"kind": "any", "regexes": ["^\\s*(?:use\\s+v6\\b|\\bmodule\\b|\\b(?:my\\s+)?class\\b)"]}]
h/linguist/.pm/2x-pixmappredicates[{"kind": "any", "regexes": ["^\\s*\\/\\* XPM \\*\\/"]}]

SWH-mined examples (1)

Real archived programs with this extension, byte-verified against the SWH archive. Useful for deciding what this extension actually is when the attribution is uncertain.
IssuingRules.pm · 7958 B · seen 1695× in SWH
predicted: Perl via heuristic
swh:1:cnt:6023671522ebe2915fc8348a5353e5d2dab14084;origin=https://github.com/laurenthdl/koha-biblibre;anchor=swh:1:rev:489bd948a04a9efeba23e903ca069d2cc2ec439d;path=/C4/IssuingRules.pm
Open in SWH · Raw bytes
Request more SWH-mined examples
If the examples above don't disambiguate what .pm is, request a fresh mining run.
(or open the pre-filled issue directly)