Perl開発支援(Mojolicious/DBI/Carton)。 モダンPerl、perlcritic、Test::Moreでガイド。
View on GitHubsk8metalme/ai-agent-setup
lang-perl
January 25, 2026
Select agents to install to:
npx add-skill https://github.com/sk8metalme/ai-agent-setup/blob/main/plugins/lang-perl/skills/perl/SKILL.md -a claude-code --skill perl-devInstallation paths:
.claude/skills/perl-dev/# Perl開発固有設定
このファイルはPerl開発に特化した設定を定義します。
## 公式ドキュメントリファレンス
最新の安定版バージョンは以下の公式ドキュメントを参照してください:
| 技術 | 公式ドキュメント | 用途 |
|-----|----------------|------|
| Perl | [Perl Downloads](https://www.perl.org/get.html) | バージョン確認・ダウンロード |
| Perl Releases | [Perl Development](https://dev.perl.org/) | リリース情報 |
| Mojolicious | [Mojolicious (MetaCPAN)](https://metacpan.org/dist/Mojolicious) | 最新版・リリース履歴 |
| Dancer2 | [Dancer2 (MetaCPAN)](https://metacpan.org/dist/Dancer2) | 最新版・リリース履歴 |
| DBIx::Class | [DBIx::Class (MetaCPAN)](https://metacpan.org/dist/DBIx-Class) | 最新版・リリース履歴 |
| Moo | [Moo (MetaCPAN)](https://metacpan.org/dist/Moo) | 最新版・リリース履歴 |
| Carton | [Carton (MetaCPAN)](https://metacpan.org/dist/Carton) | 最新版・リリース履歴 |
## Perl開発固有のルール
### バージョン要件
最新の安定版バージョンは上記の公式ドキュメントリファレンスで確認してください。
- Perl: 最新の安定版を使用([公式サイト](https://www.perl.org/get.html)で確認)
- 参考: Perl 5.38以降を推奨(2025年12月時点)
- strictとwarnings必須
- utf8プラグマの使用
- モダンPerlイディオムの活用
### コーディング標準
- use strict; use warnings; use utf8; 必須
- perlcritic準拠
- 意味のある変数名・サブルーチン名
- 適切なエラーハンドリング
### モダンPerl機能
```perl
#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use feature ':5.32';
# シグネチャを使用
use feature 'signatures';
no warnings 'experimental::signatures';
sub calculate($x, $y) {
return $x + $y;
}
# sayを使用
say "Hello, World!";
# stateで永続的な変数
sub counter {
state $count = 0;
return ++$count;
}
```
### 用途別技術スタック
#### Webアプリケーション
- Mojolicious(モダンなWebフレームワーク)
- Dancer2(軽量Webフレームワーク)
- Catalyst(エンタープライズ向け)
- Plack/PSGI(Webサーバーインターフェース)
#### データベース
- DBI + DBD::mysql / DBD::Oracle
- DBIx::Class(ORM)
- Teng(軽量ORM)
### フレームワーク例
#### Mojolicious
```perl
# モダンなWebフレームワーク
package MyApp;
use Mojo::Base 'Mojolicious', -signatures;
sub startup($self) {
my $r = $self->routes;
# RESTfulルート
$r->get('/users')->to('users#index');
$r->post('/users')->to('users#create');
$r->get('/users/:id')->to('users#show');
}
# コントローラー
package MyApp::Controller::Users;
use Mojo::Base 'Mojolicious::Controller'Issues Found: