🐫
cpmを使ってPerlモジュールをlocalで試せるように
これはなに
現在、Perlのプロダクトを別言語へのリプレイスを行っています。
Perlのモジュールの挙動が試せる環境がほしかったので、試しにcpmを利用してみました。
今回はcpmを利用してモジュールをインストールし、perlスクリプトで利用するところまでを備忘録として書きます。
cpm
cpmはcpanmをより早くしたモジュールインストーラーです。
モジュール同士の依存関係の解決をcpanmを並列に稼働させて高速に実現しているようです。
Perlのバージョン
5.30.3
cpmインストール
$ mkdir sample
$ cd sample
$ curl -fsSL https://git.io/cpm > cpm
$ chmod +x cpm
$ ./cpm --version
モジュールインストール
試しにString::Random
モジュールをインストールします。
String::Random
モジュールは文字通りランダムな文字列を生成するモジュールです。
正規表現を使って生成する文字列の構造を指定できます。
$ ./cpm install String::Random
DONE install Module-Build-0.4231 (using prebuilt)
DONE install String-Random-0.32 (using prebuilt)
2 distributions installed.
モジュールのインストールが完了し、localディレクトリが作成されます。
./local/lib/perl5/
にインストールしたモジュールが置かれます。
$ tree -L 5
.
├── cpm
└── local
├── bin
│ └── config_data
└── lib
└── perl5
├── 5.30.3
│ └── darwin-thread-multi-2level
├── Module
│ ├── Build
│ └── Build.pm
├── String
│ └── Random.pm
└── darwin-thread-multi-2level
└── auto
モジュールを利用する
インストールしたString::Random
を使って
かんたんな文字列を生成するファイルを作成します。
./random.pl
use strict;
use warnings;
use String::Random;
my $generator = String::Random->new();
my $string = $generator->randregex('\d{5}'); # generate 5 random digits
print "string: $string\n";
perlコマンドでinclude
オプションを使ってplファイルを実行します。
$ perl -I $PWD/local/lib/perl5 random.pl
string: 97263
lib
, FindBin::Bin
を利用した呼び出し方
毎回include
コマンドを実行するのが面倒な場合、
標準モジュールのlib
、FindBin
を利用することでオプションを省略できます。
./random.pl
use strict;
use warnings;
use FindBin; # 追加
use lib "$FindBin::Bin/local/lib/perl5"; # 追加
use String::Random;
my $generator = String::Random->new();
my $string = $generator->randregex('\d{5}'); # generate 5 random digits
print "string: $string\n";
perlコマンドの実行がシンプルになりました。
$ perl random.pl
string: 96416
lib
モジュール
Perlモジュールの検索先に指定したパスを追加出来るモジュールです。
モジュールを検索する時、こちらで追加したパスが一番最初に検索されるようになります。
FinBin
モジュール
実行されたスクリプトのディレクトリパスを取得することが出来るモジュールです。
$FindBin::Bin
という特殊な変数にでディレクトリのパスが格納されています。
参考
こちらの記事を参考にさせてもらいました
Discussion