鱒身(Masu_mi)のブログ

知った事をメモする場所。

Perl の開発環境の準備

依存管理

plenv + cpanm + carton でPerlの開発環境を構築する を真似る。

plenv perl のVersion切り替えを行なう
cpanm plenvでインストールしたperlにversion毎にモジュールをインストールする
carton モジュールの依存関係をローカル毎に管理する

OSXは以下を簡単に実施した。

brew install plenv
brew install perl-build
cat ~/.bashrc
if which plenv > /dev/null; then eval$(plenv init -); fi
plenv install-cpanm
plenv exec cpanm Module::Install
plenv exec cpanm Carton

スケルトン生成の準備

Perl ではh2xs, Module::Setup モジュールでスケルトンを生成するらしい。(FWでスケルトン生成があればそっちを使う(amon2など)) Module::Setup は以下でインストール出来た。(h2xs は最初から使用可能だった)

$ plenv exec cpanm JSON # JSON に依存しているため
$ plenv exec cpanm Module::Setup

スケルトン生成してみる

h2xs を試す

$ h2xs -AX --skip-exporter -n Foo::Bar
$ tree Foo-Bar/
Foo-Bar/
├── Changes
├── MANIFEST
├── Makefile.PL
├── README
├── lib
│   └── Foo
│       └── Bar.pm
└── t
    └── Foo-Bar.t

module-setup を試す

フレーバーを使って柔軟にスケルトンを生成出来るらしい。

# まずmodule-setup の初期化を行なう
$ plenv exec module-setup --init
Creating directory /Users/masumi/.module-setup
....
Creating directory /Users/masumi/.module-setup/flavors/default/template
# 色々生成された後に使うバージョン管理を聴かれる
Do you use SVN? [yN] [n] y
You chose version control system: SVN
Do you use SVK? [yN] [n] n
Do you use Git? [yN] [n] y
You chose version control system: Git
Your name:  [Default Name] Masumi Kanai
Your email:  [default {at} example.com] masumi.net@gmail.com
Dump config /Users/masumi/.module-setup/flavors/default/config.yaml

# 生成してみる
$ plenv exec module-setup MyModule
$ initial commit
12 files changed, 137 insertions(+)
create mode 100644 .gitignore
create mode 100644 .shipit
create mode 100644 Changes
create mode 100644 MANIFEST.SKIP
create mode 100644 Makefile.PL
create mode 100644 README
create mode 100644 lib/MyModule.pm
create mode 100644 t/00_compile.t
create mode 100644 xt/01_podspell.t
create mode 100644 xt/02_perlcritic.t
create mode 100644 xt/03_pod.t
create mode 100644 xt/perlcriticrc

# パッケージを作ってみる
perl Makefile.PL
# Makfileが生成される
make
make test
make dist
....
Created MyModule-0.01.tar.gz

2つのスケルトン共にデフォルトではCartonが利用するcpanfileを吐かないので対応が必要になる。 module-setupの場合はフレーバーを作れば良さそう。 Makefile.PLと記法が異なるので注意。