PerlによるDSLの作り方
TIME rest time current/total
TopicsPlaceHolder

PerlによるDSLの作り方

Perl Beginners #14

Jul 25th, 2014

Profile

songmu

Recent Output

最近本を売りました

バーコードリーダー

DSLとは?

Perlで作られたDSL

LLで書くDSLの種類

言語内DSLの種類

cpanfileの場合

requires 'Plack::Request';
on test => sub {
    requires 'Test::More';
};

DBIx::Schema::DSLの場合

create_table book => columns {
    integer 'id',   primary_key, auto_increment;
    varchar 'name', null;
    integer 'author_id', not_null;
    decimal 'price', 'size' => [4,2];

    add_index  'author_id_idx' => ['author_id'];
    belongs_to 'author';
};

PerlによるDSLの記述

サブルーチンプロトタイプ

&を指定することでsubの3文字を省略できる。

sub run(&) {
    my $code = shift;
    $code->();
}

# 以下のように呼び出せる
# run( sub{ ... } ); # と同じ
run {
    ... # ここのコードが実行される
};

状態の保存

その他気をつけること