mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-03-30 13:43:26 +08:00
Add rules/perl/ with 5 rule files (coding-style, testing, patterns, hooks, security) following the same structure as existing languages. Update README.md, README.zh-CN.md, and rules/README.md to document Perl support including badges, directory trees, install instructions, and rule counts.
1.4 KiB
1.4 KiB
paths
| paths | |||||
|---|---|---|---|---|---|
|
Perl Patterns
This file extends common/patterns.md with Perl specific content.
Repository Pattern
Use DBI or DBIx::Class behind an interface:
package MyApp::Repo::User;
use Moo;
has dbh => (is => 'ro', required => 1);
sub find_by_id ($self, $id) {
my $sth = $self->dbh->prepare('SELECT * FROM users WHERE id = ?');
$sth->execute($id);
return $sth->fetchrow_hashref;
}
DTOs / Value Objects
Use Moo classes with Types::Standard (equivalent to Python dataclasses):
package MyApp::DTO::User;
use Moo;
use Types::Standard qw(Str Int);
has name => (is => 'ro', isa => Str, required => 1);
has email => (is => 'ro', isa => Str, required => 1);
has age => (is => 'ro', isa => Int);
Resource Management
- Always use three-arg open with
autodie - Use Path::Tiny for file operations
use autodie;
use Path::Tiny;
my $content = path('config.json')->slurp_utf8;
Module Interface
Use Exporter 'import' with @EXPORT_OK — never @EXPORT:
use Exporter 'import';
our @EXPORT_OK = qw(parse_config validate_input);
Dependency Management
Use cpanfile + carton for reproducible installs:
carton install
carton exec prove -lr t/
Reference
See skill: perl-patterns for comprehensive modern Perl patterns and idioms.