Perl開発環境準備

perlのバージョンやモジュールの依存性管理もちゃんとして、スケルトン生成から開発を始められるようにする。

依存管理

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

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

OSXでは以下を実施。

1
2
3
4
5
6
7
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は最初から使用可能だった)

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

スケルトン生成してみる

h2xs を試す

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
$ 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 を試す

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# まず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と記法が異なるので注意。

Carton, Cpanm の参考資料

comments powered by Disqus