Closed12

[Scrap] Perl, Sledge のコードリーディングメモ

仕事で Perl で記述されたサーバーサイドのコードを読む必要があり、メモ書きを残しておく。
Sledge という livedoor 社が開発した WEB フレームワークを使っているっぽい。(ググったら Rebuild の miyagawa さんに辿り着いた)

Perl の公式ページ
livedoor/Sledge
Bundle::Sledge - Bundle to install all Sledge related modules - metacpan.org

Sledge

以下の Think IT の WEB フレームワークを使用する開発についての記事で、Sledge が題材として取り上げられている。素直に実装されていたら参考にできるかも。

https://thinkit.co.jp/free/tech/9/1/1.html

Hook 処理 - プラガブルモジュール

処理を登録できるポイントが package 側で提供されていて、ユーザーが処理を登録する設計手法。

__PACKAGE__->register_hook(
    SOME_HOOK_POINT => sub {
       
    }
);

https://gihyo.jp/dev/feature/01/perl-pluggable/0004

Perl の文法

The Perl Playground

Perl の WEB ベースの Playground があるので、文法で気になったところをサクッと試したい時に使える。

https://perlbanjo.com/

@_

@_ がしょっちゅう出てくるけど、サブルーチン(関数)の引数が格納されてるみたい。

以下は a, b を取り出す処理。

sub run {
    my ( $a, $b ) = @_;
}

->=>

ぱっと見分かりにくいけど、-> がサブルーチン呼び出し。=> がハッシュ。

shift

array の要素を取り出す際に shift を使用する。サブルーチン内で呼び出すと暗黙的にサブルーチンの引数を取り出す事になる。

sub run{
  # my $self = shift @_; と同じ意味
  my $self = shift;
}

参考

https://perlzemi.com/blog/20101130129876.html

stash

Perl のコードを読んでいてしょっちゅうstash という単語が出てくる。sub_module を跨いでアクセスできる Key-Value マップっぽい。(スコープがどうなってるのか、とかは気になるけど、詳しく調べる気は今のところない)

# stash の some_key に 'value' と保存する処理
$self->stash->{some_key}  = 'value'

https://metacpan.org/pod/Package::Stash

Perl の try / catch

# try/catch でいう try
eval {
   # 何かの処理
}
# error が取り出せる
my $error = $@;
このスクラップは4ヶ月前にクローズされました
ログインするとコメントできます