読者です 読者をやめる 読者になる 読者になる

Anagura's.....

たまに書く

Acme::HowToMakeSushiをリリースした

ということでCPANモジュール第2弾 Acme::HowToMakeSushiをリリースしました🎉

githubはこのようになっています

github.com

metacpanもこのようになっています

metacpan.org


制作背景

多くのプログラマーが愛してやまない🍣と多くのPerlMongerが愛してやまないPerlプログラムはほぼ同値な関係ではないか. だったらこの二つを同時に作成出来ればPerlMongerの生産性があがるのでは無いかという発想の元生まれたmoduleです. 尚このモジュールはOkinawa.pm #4 エイプリルパールで発表しました.リリースしたのは4/1なのでお察しください

使い方

Acme::HowToMakeSushiはcpanmなどでインストールすると,本体の他に Acme::HowToMakeSushi::Photoもインストールされます. これらは同時に使用することが出来ない仕様となっています.

HowToMakeSushi

HowToMakeSushiはexit codeが0であるPerlプログラムであるならば寿司を完成させます. ただし 誰もお前を愛さない 的なコード.つまりexit codeが0以外のperlプログラムを作成した場合 あの漫画 っぽいメッセージと共に崩れた寿司を作ります.

実際に試してみると f:id:shimitakax:20170403093604j:plain こんな感じに寿司が出来ます.

dieすると f:id:shimitakax:20170403093646j:plain 誰もお前を愛さないメッセージと共に崩れます.

動作原理

ENDブロック内で $? の値に応じてAAをヒアドキュメントの形で printに渡しています

HowToMakeSushi::Photo

AAだけではつまらん!! 実際に現物を作れよ!!との声に答えて::Photoではjpgデータを出力します.

 perl -MAcme::HowToMakeSushi::Photo -e '' >sushi.jpg

などとすると

f:id:shimitakax:20170403094328j:plain

と寿司が出来ます.

動作原理

printを出力するところまでは先程と同様ですが,今回は予めbase64エンコードしたjpgデータを用意しています. これをMIME::Base64を用いて,デコードしてprintしています. つまりAcme::Cakeのアルゴリズムを使っています. 画像をbase64エンコードするツール


今回もモジュール雛形作成はMinillaを用いて行いました.cpanfileを作成する際に

perl Build.pl
mymeta-cpanfile --no-configure >cpanfile

などとすればいい感じにcpanfileを作ってくれるので楽です.尚cpanfileを作成するにあたっては scan-prereqs-cpanfileなどというCPANモジュールのコマンドも存在しているので,詳細は調べたいと思っています.

Minillaでモジュールを作成する場合 *.pmファイルの =encoding utf-8以降の部分にSYNOPSIS等の記述を行えば,Readmeにもいい感じに反映されます.すごい.

3月に引き続き2ヶ月連続Acmeモジュールリリースが達成できたのでちょっと嬉しいです. 尚このモジュールをリリースしたのは4/1なのですが,3/31がリリース日となるエイプリルフールもありました.