Agent skill · software engineering · affaan-m
perl-patterns
现代 Perl 5.36+ 的惯用法、最佳实践和约定,用于构建稳健、可维护的 Perl 应用程序。
Why this skill is useful
Provides modern Perl 5.36+ idioms and best practices that the AI wouldn't reliably generate on its own.
What it needs
About 6k tokens when loaded. Last updated 2026-08-06. 238,342 stars on the source repository.
What this skill does
现代 Perl 开发模式 适用于构建健壮、可维护应用程序的 Perl 5.36+ 惯用模式和最佳实践。 何时启用 编写新的 Perl 代码或模块时 审查 Perl 代码是否符合惯用法时 重构遗留 Perl 代码以符合现代标准时 设计 Perl 模块架构时 将 5.36 之前的代码迁移到现代 Perl 时 工作原理 将这些模式作为偏向现代 Perl 5.36+ 默认设置的指南应用:签名、显式模块、聚焦的错误处理和可测试的边界。下面的示例旨在作为起点被复制,然后根据您面前的实际应用程序、依赖栈和部署模型进行调整。 核心原则 1. 使用 v5.36 编译指令 单个 use v5.36 即可替代旧的样板代码,并启用严格模式、警告和子程序签名。 2. 子程序签名 使用签名以提高清晰度和自动参数数量检查。 3. 上下文敏感性 理解标量上下文与列表上下文——这是 Perl 的核心概念。 4. 后缀解引用 对嵌套结构使用后缀解引用语法以提高可读性。 5. isa 运算符 (5.32+) 中缀类型检查——替代 blessed($o) && $o->isa('X')。 错误处理 eval/die 模式 Try::Tiny(可靠的异常处理) 原生 try/catch (5.40+) 使用 Moo 的现代 OO 优先使用 Moo 进行轻量级、现代的面向对象编程。仅当需要 Moose 的元协议时才使用它。 Moo 角色 原生 class 关键字 (5.38+, Corinna) 正则表达式 命名捕获和 /x 标志 预编译模式 数据结构 引用和安全深度访问 文件 I/O 三参数 open 使用 Path::Tiny 进行文件操作 模块组织 标准项目布局 导出器模式 工具 perltidy 配置 (.perltidyrc) perlcritic 配置 (.perlcriticrc) 依赖管理 (cpanfile + carton) 快速参考:现代 Perl 惯用法 遗留模式 现代替代方案 --- --- use strict; use warnings; use v5.36; my ($x, $y) = @; sub foo($x, $y) { ... } @{ $ref } $ref->@ %{ $ref } $ref->% open FH, "< $file" open my $fh, '<:encoding(UTF-8)', $file blessed hashref Moo 带类型的类 $1, $2, $3 $+{name} (命名捕获) eval { }; if ($@) Try::Tiny 或原生 try/catch (5.40+) BEGIN { require Exporter; } use Exporter 'import'; 手动文件操作 Path::Tiny blessed($o) && $o->isa('X') $o isa 'X' (5.32+) builtin::true / false use builtin 'true', 'false'; (5.36+, 实验性) 反模式 记住:现代 Perl 是简洁、可读且安全的。让 use v5.36 处理样板代码,使用 Moo 处理对象,并优先使用 CPAN 上经过实战检验的模块,而不是自己动手的解决方案。
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills affaan-m/perl-patterns--2abd70