[Scrap] Perl, Sledge のコードリーディングメモ
仕事で Perl で記述されたサーバーサイドのコードを読む必要があり、メモ書きを残しておく。
Sledge という livedoor 社が開発した WEB フレームワークを使っているっぽい。(ググったら Rebuild の miyagawa さんに辿り着いた)
Perl の公式ページ
livedoor/Sledge
Bundle::Sledge - Bundle to install all Sledge related modules - metacpan.org
Perl 5 の次で 6 を飛ばして Perl 7 が出るらしい。
(6 で fork して、かつリネームされて別言語に生まれ変わったらしい)
このブログ Perl の記事多い。
Fork した別言語 Raku
ちょろっとドキュメント読むと型も書けるみたい。
https://docs.raku.org/language/faq#What_are_those_:D_and_:U_things_in_signatures?
Sledge
以下の Think IT の WEB フレームワークを使用する開発についての記事で、Sledge が題材として取り上げられている。素直に実装されていたら参考にできるかも。
Perl の文法
The Perl Playground
Perl の WEB ベースの Playground があるので、文法で気になったところをサクッと試したい時に使える。
@_
@_ がしょっちゅう出てくるけど、サブルーチン(関数)の引数が格納されてるみたい。
以下は a, b を取り出す処理。
sub run {
my ( $a, $b ) = @_;
}
->
と =>
ぱっと見分かりにくいけど、->
がサブルーチン呼び出し。=>
がハッシュ。
shift
array の要素を取り出す際に shift
を使用する。サブルーチン内で呼び出すと暗黙的にサブルーチンの引数を取り出す事になる。
sub run{
# my $self = shift @_; と同じ意味
my $self = shift;
}
参考
stash
Perl のコードを読んでいてしょっちゅうstash
という単語が出てくる。sub_module を跨いでアクセスできる Key-Value マップっぽい。(スコープがどうなってるのか、とかは気になるけど、詳しく調べる気は今のところない)
# stash の some_key に 'value' と保存する処理
$self->stash->{some_key} = 'value'
Perl の特殊変数一覧
以下は直前の eval コマンドのエラーメッセージらしい。まじで読めない。
$@
最高の記事を見つけた🙏
Perl の真偽判定
真偽値以外の値が if や unless でどのように判定されるかについて。
Perl の try / catch
# try/catch でいう try
eval {
# 何かの処理
}
# error が取り出せる
my $error = $@;
Perl の依存解決
Perl では carton
という依存解決のモジュールがあり、cpanfile から依存をインストールできる。