perl-lint

Perl Linting and Formatting

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "perl-lint" with this command: npx skills add jamie-bitflight/claude_skills/jamie-bitflight-claude-skills-perl-lint

Perl Linting and Formatting

Run Perl::Critic analysis and perltidy formatting with automatic tool detection.

Workflow

  • Check if perlcritic/perltidy are installed

  • Run analysis on specified files

  • Report findings with severity levels

  • Suggest fixes or format code

Tool Detection

First, verify tools are available:

Check perlcritic

command -v perlcritic >/dev/null && echo "perlcritic available" || echo "Install: cpanm Perl::Critic"

Check perltidy

command -v perltidy >/dev/null && echo "perltidy available" || echo "Install: cpanm Perl::Tidy"

Perl::Critic Analysis

Running perlcritic

Default analysis (severity 5 - gentle)

perlcritic script.pl

All severities (1 = strictest)

perlcritic --severity 1 script.pl

Specific severity level

perlcritic --severity 3 script.pl

With verbose explanations

perlcritic --verbose 11 script.pl

Single policy

perlcritic --single-policy RequireUseStrict script.pl

Exclude policies

perlcritic --exclude RequireUseWarnings script.pl

Severity Levels

Level Name Description

5 Gentle Obvious, unambiguous issues

4 Stern Usually bad practices

3 Harsh Controversial but recommended

2 Cruel Pickier about style

1 Brutal Maximum strictness

Common Policies

Policy Severity Issue

RequireUseStrict 5 Missing use strict

RequireUseWarnings 4 Missing use warnings

ProhibitBarewordFileHandles 5 Using bareword filehandles

ProhibitTwoArgOpen 5 Two-argument open()

ProhibitStringyEval 5 Using eval with string

RequireTidyCode 1 Code not formatted

Configuration File

Create .perlcriticrc in project root:

.perlcriticrc

severity = 3 verbose = 8 theme = core

Exclude specific policies

[-Documentation::RequirePodSections] [-InputOutput::RequireBriefOpen]

Configure specific policy

[CodeLayout::RequireTidyCode] perltidyrc = .perltidyrc

[Variables::ProhibitPackageVars] packages = Data::Dumper File::Find

[TestingAndDebugging::ProhibitNoStrict] allow = refs

Verbose Formats

Level Output Format

1 Line only

4 Line + Column

8 Line + Policy + Severity

10 Full explanation

11 With PBP page reference

Perltidy Formatting

Basic Usage

Format file (creates .bak backup)

perltidy script.pl

Format to stdout (no backup)

perltidy -st script.pl

In-place edit (no backup)

perltidy -b -nst script.pl

Check if tidy (exit code)

perltidy -st script.pl | diff -q - script.pl

Common Options

Basic formatting

perltidy -i=4 -ci=4 -l=100 script.pl

Full command with common options

perltidy
--indent-columns=4
--continuation-indentation=4
--maximum-line-length=100
--vertical-tightness=2
--paren-tightness=1
--brace-tightness=1
script.pl

Configuration File

Create .perltidyrc in project root:

.perltidyrc

Indentation

--indent-columns=4 --continuation-indentation=4

Line length

--maximum-line-length=100

Blank lines

--blank-lines-before-subs=1 --blank-lines-after-block-opening=0

Spaces

--paren-tightness=1 --brace-tightness=1 --square-bracket-tightness=1

Vertical alignment

--no-outdent-long-quotes --no-outdent-long-comments

Output

--backup-and-modify-in-place --backup-file-extension=/

Combined Workflow

Lint and Fix

Code examples

Interpreting Results

Severity 5 (Critical)

Must fix immediately:

Bareword file handle opened at line 10, column 1. Two-argument "open" used at line 15, column 5.

Fix:

Wrong

open FILE, $filename;

Correct

open my $fh, '<', $filename;

Severity 4 (Important)

Should fix:

Code before strictures are enabled at line 1.

Fix:

Add at top

use strict; use warnings;

Severity 3 (Recommended)

Consider fixing:

Regular expression without "/x" flag at line 25.

Installation

If tools are missing:

Install both tools

cpanm Perl::Critic Perl::Tidy

Verify installation

perlcritic --version perltidy --version

Quick Commands

Lint specific file:

perlcritic --severity 4 --verbose 8 path/to/file.pl

Lint all Perl files in directory:

find . -name '.pl' -o -name '.pm' | xargs perlcritic --severity 4

Format all files:

find . -name '.pl' -o -name '.pm' | xargs perltidy -b

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

duckdb-sql

No summary provided by upstream source.

Repository SourceNeeds Review
General

latex-pdf-compiler

No summary provided by upstream source.

Repository SourceNeeds Review
General

viz

No summary provided by upstream source.

Repository SourceNeeds Review
General

architecture-analyzer

No summary provided by upstream source.

Repository SourceNeeds Review