Acme::Jiro - ラーメン二郎ジェネレータ in Perl

syohex
2011-12-05

こんにちわ. けいおんの映画を未だ見れていない syohexです. 今週の出張が終わったらぜひ映画館に行きたいですね.

はじめに

Acme::Jiroの Perl版です. ラーメン二郎というお店はメニューを頼むときに呪文を唱えないといけないそうです. もたもたしていると怒られるとかなんとかって話も出ているんで, しっかり準備していきたいですよね.

使い方

各パラメータをコンストラクタに与えるだけです. コンストラクタのキーは '麺', '固さ', '野菜', '背脂', 'タレ', 'にんにく'です.

#!perl
use strict;
use warnings;

use utf8;
use Acme::Jiro;

binmode STDOUT, ":utf8";

my $jiro = Acme::Jiro->new(
    '野菜'     => '極めて多め',
    '背脂'     => '普通',
    'タレ'     => '多め',
    'にんにく' => '多め',
);

print $jiro->magic, "\n"; # カラメニンニクマシチョモランマ

私を含めそもそもどのパラメータにどんな値をいいかわからないので, そういう方のために promptメソッドがあります. こうすると各パラメータについて選択肢が表示されます.

#!perl
use strict;
use warnings;

use Acme::Jiro;

binmode STDOUT, ":utf8";

my $jiro = Acme::Jiro->new();
$jiro->prompt;
print $jiro->magic, "\n";


以下のようなプログラムを書いて, 呪文をみんなで当て合いっこするのも楽しいかもしれません.

#!perl
use strict;
use warnings;

use utf8;
use Acme::Jiro;
use List::Util qw(shuffle);

binmode STDOUT, ":utf8";

my @params = qw/麺 固さ 野菜 背脂 タレ にんにく/;
for my $i (1..100) {
    my %parameter;
    for my $key (@params) {
        my @volumes = Acme::Jiro->get_valid_param($key);
        $parameter{$key} = (shuffle @volumes)[0];
    }

    print " $_:$parameter{$_}" for @params;
    print "\n";
    sleep 2;

    my $jiro = Acme::Jiro->new(%parameter);
    print " ==> ", $jiro->magic, "\n\n";
}

おわりに

Acme::Jiroというモジュールを紹介しました. こういうのを書いているととても「ラーメン食いてぇ」ってなってきますね.

さぁ, 明日は誰が書いてくれるんでしょうか ?