ROUTE 3390

備忘録的な用途で書いていますが、どなたかの役に立つ事があれば嬉しいです。

AcmeモジュールをCPANにあげてみた

先日Perl Beginnersに参加したときにLTで話した
Acme::ReplicaというモジュールをCPANにアップしました。

コードはCPANgithubをご参照ください。

Acme::Replicaについて

精巧に作られた食品サンプルのように、見た目は本物そっくりですが
実際には食べれない値を返すモジュールです。


暇なときにでも使ってみてください。

use 5.010;
use Acme::Replica;

my $rep = replica_of( 'sasakure' );
if ( $rep eq 'sasakure' ) {
    say 'ここは表示されない';
} else {
    say 'ここは表示される';
    say $rep; # sasakure
}

ifの評価ではfalseになるのに、sasakureってちゃんと表示される。
どういう事かというと
表示しても字としては出てこないけど、実際はバイト単位では余計なデータが付けているから。


ハッシュを渡すとキーに余計なゴミバイトが付くようになってます。

use 5.010;
use Acme::Replica;
use Data::Dumper;

my %rep = replica_of( {
    japanese => 'sushi',
    amelican => 'hotdog',
} );

say Dumper ¥%rep;
# $var1 = {
#     japanese => 'sushi',
#     american => 'hotdog',
# };
say $replica{japanese}; # エラーになる

$replica{japanese} = 'sukiyaki';
say Dumper ¥%rep;
# $var1 = {
#     japanese => 'sushi',
#     japanese => 'sukiyaki',
#     american => 'hotdog',
# };

say $replica{japanese}; # sukiyaki

あくまでReplica(模造品)なので同じようで、違うハッシュが返ってきています。
食品サンプルが並んだハッシュに自分でスキヤキを入れたら、
スキヤキだけはちゃんと(食べれ|取れ)ます。


記念すべき僕の初Acmeモジュール :-P
Ver0.02ではMakefile.pmに初めてinc::Module::Installを使ってみました。


配列やハッシュを引数で渡すとき、使い易さでいったら、そのままブッコむ!
って思ったんですが、
後で引数を増やしたい時とか困るな〜って思ってリファレンス渡しにしました。


こういうAcmeモジュールほど、気軽にアドバイスいただけちゃったり
Pull Reqもらえるんじゃないかとwktkしてます。