This skill should be used when the user asks to lint Perl code, run perlcritic, check Perl style, format Perl code, run perltidy, or mentions Perl Critic policies, code formatting, or style checking.
Run Perl::Critic analysis and perltidy formatting with automatic 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"
# 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
| 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 |
| 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 |
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
| Level | Output Format | | ----- | ------------------------ | | 1 | Line only | | 4 | Line + Column | | 8 | Line + Policy + Severity | | 10 | Full explanation | | 11 | With PBP page reference |
# 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
# 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
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=/
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;
Should fix:
Code before strictures are enabled at line 1.
Fix:
# Add at top
use strict;
use warnings;
Consider fixing:
Regular expression without "/x" flag at line 25.
If tools are missing:
# Install both tools
cpanm Perl::Critic Perl::Tidy
# Verify installation
perlcritic --version
perltidy --version
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
npx skills add Jamie-BitFlight/Perl 代码检查与格式化下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer