MPがありません。

$liiu->mp == 0

Perl

Perl で immutable なデータ構造を作る

この記事はPerl Advent Calendar 202113日目の記事です。 2時間ほど遅刻して申し訳ございません・・・ この記事では Perlで Internals::SvREADONLY を利用しimmutableなデータ構造を作る方法について書きます。 検証は perl5.34.0 で行っています。 immutabl…

Types::Standard で利用できる、知っておくと便利な型

概要 Perlで型チェックを行うモジュールに Type::Tiny というものがあります。 Type::Tiny には Types::Standard というライブラリがついてきて、いろいろな型が利用可能になるわけですが、 これはその Types::Standard で利用可能な、個人的に知っていると…

Function::Parameters + Mouse::Util::TypeConstraints = パフォーマンス激強

概要 Perlのサブルーチンの引数バリデーションをするモジュールはいろいろありますが、 Function::Parameters が他の引数のバリデーションを行うモジュールと比べて高速にバリデーションできるという話を聞いて、であれば Mouse::Util::TypeConstraints と組…

ソースコードからビルドしたPerlをplenvで管理する

独自にコンパイルされたperlや自分で少しソースコードをいじったperlもplenvで管理したいなーと思ったのでやってみました。 基本的にrbenvなどと同じようにできるようです。 手順 1. Perlのソースコードを入手する perl - The Perl 5 language interpreter -…

UNIVERSAL::DOESについてのメモ

Perlのオブジェクトに $object->DOES('SomeRole') みたいな、ロールを消費したかどうかを判定できる(?)メソッドがあるのですが、それについていろいろ知見を得たのでまとめます。 Perl自体にロールを消費したかどうかを判定する機能はない 特にDOESがオーバ…

DBIx::Schema::DSLで外部キー制約を定義するときにトリガを指定する方法

こんな感じででできます foreign_key user_id => ( user => 'id', on_delete => 'CASCADE', ): ドキュメントでは foreign_key($columns :(Str|ArrayRef), $foreign_table :Str, $foreign_columns :(Str|ArrayRef) ) という風に明記されていませんが、追加の…

Plack::Middleware::Session まとめ

Plack::Middleware::Session と関連することについてのまとめ、ほぼ個人的なメモ 簡単にまとめるつもりだったけど詳しく書くとかなり長くなりそうな気がしてきた... 使い方 use Plack::Builder; builder { enable Session => ( state => Plack::Session::Sta…

モダーンなPerlの書き方

この記事は OIT Advent Calendar 2016 - Adventar 8日目の記事です。 軽く自己紹介 冷雨 (@_ybrliiu) | Twitter IN科3年 Perl大好きなことで有名かもしれません。 それより遅刻が多いことで有名ですね 十国志NETっていうオンラインシュミレーションゲームを…

Exception::Tinyを継承したクラスで例外を搬送する時、スタックバックトレースを表示させるにはどうしたらいいのか

Perlでスタックバックトレースを伴った例外を発生させるにはCarp::confessを使えばいいわけですが、 下のコードのようにException::Tinyを継承したクラスで例外を発生させる時にconfessを使ってもスタックバックトレースが表示されません。 package MyApp::E…

PerlからYoutube Data APIを利用して動画を検索する

PerlからYoutubeの動画検索しようとした時のメモ、Youtube Data APIの利用の仕方というよりはWeb APIの使い方って感じですが。 準備 Youtube Data API v3はGoogleのアカウントを持っている上で認証しないと使用できないようなので、ドキュメントを参考に準備…