SlideShare a Scribd company logo
finally (not finally)
@ytnobody
@ytnobody – わいとん
• CEO of Y.pm LLC
• Founder of Ooimachi.pm
YAPC::Kyoto 2023 「裏トーク」
引用元 https://blog.yapcjapan.org/entry/2023/03/15/120000
真新しい話はたぶんないですが。
use v5.34;
use experimental qw(try);
• v5.34でtry/catchがperlにも来ていた
• もう2年前のお話
やってみる
やってみる
Ctrl-C
やってみる
Ctrl-C
実行されとらんが?
やってみる
このループにいる最中で
Ctrl-C押されてる
やってみる
一応tryの中だけど?
try/catchはシグナルを処理しない
それはそう😌
こうなった
こうなった
Ctrl-C
こうなった
catch動いた
シグナルを処理するロジックのおかげ
(try/catchのおかげではない)
Ctrl-C(SIGINT)を
受け取ったときの処理
ところでfinallyをつかうとこうなる
finallyがすること
• try/catchの処理後、必ずブロック内のコードを実行する
• 何か例外をcatchしても仕事をする。
• ようするに「あと始末」に使いそう。
ところで、try/catch/finally以前は
どうしていたのか?
• Try::Tinyでよしなにする
• eval { … }; if ($@) { … }; と
Guard.pmでがんばる
個人的感想
モジュール作者以外はtry/catch/finally使おう
• モジュール作者の場合、どう
しても古い環境(Perl 5.12等)
で動かされてしまうことを念
頭に置かないといけない。
• そこをサポート外とするのは全
然アリ。
• 画像はMojoliciousのCPAN
Testers Matrix
• モジュール作らないor新しい
Perlを使えるなら、平易な書
き方の方がいい。
引用元 http://matrix.cpantesters.org/?dist=Mojolicious
個人的感想
finallyとGuard.pmのguardは用途が近そう
• ようするに「あと始末」要員
• でも外部モジュールに依存しなくていいので、finally使いたい
• guardの場合、コードの見た目の前後関係が逆になりがち
• 上から下に読み下したいと思った時に目が滑るかも
• before v5.34, finally is not finally, it's a guard object.
• finally is not finally っていいたいだけ
個人的感想
記号が減るのは良い
• eval/if($@) と比較して try/catch/finally は…
• 覚えることが少ない
• 記号が減る
• ので、良い。
おまけ
• GPT先生に聞いてみた
GPT先生・・・

More Related Content

PPTX
zの力をPerlに持ってきた話 @湘.なんか #2 by わいとん a.k.a. ytnobody
PPTX
Elixirで関数型言語の設計を学ぶ - daimon.ex 2024-09-20
PPTX
湘なんか#1 え!!JavaScriptでパイプラインを? by @ytnobody
PPTX
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
PPTX
時を駆けるINSERT.pptx
PPTX
できる!サーバレスアーキテクチャ
PDF
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1
PDF
L tthon
zの力をPerlに持ってきた話 @湘.なんか #2 by わいとん a.k.a. ytnobody
Elixirで関数型言語の設計を学ぶ - daimon.ex 2024-09-20
湘なんか#1 え!!JavaScriptでパイプラインを? by @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
時を駆けるINSERT.pptx
できる!サーバレスアーキテクチャ
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1
L tthon

More from azuma satoshi (17)

PDF
Perlbeginnes 9 lt_ytnobody
PDF
Perlbeginnes 9 opening
PDF
Perlbeginners proposal
ODP
Chibapm01 lt
PDF
入れ子構造を分解する
PDF
YAPC::Asia 2012 CPANに恩返ししよう
PDF
ライブコーディング(?)で学ぶPerlオブジェクト指向
PDF
Perlbeginnes 4 keynote
PDF
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
PDF
Perlbeginners 3 opening talk
PDF
PSGIへの誘い
PDF
Perlbeginnes 2 keynote
PDF
Hachiojipm 14 LT
PDF
Perl Beginners #1 keynote
PDF
大ざっぱにオブジェクト指向
PDF
Hachioji.pm #13 LT
PDF
Alluren of prototype-based OOP
Perlbeginnes 9 lt_ytnobody
Perlbeginnes 9 opening
Perlbeginners proposal
Chibapm01 lt
入れ子構造を分解する
YAPC::Asia 2012 CPANに恩返ししよう
ライブコーディング(?)で学ぶPerlオブジェクト指向
Perlbeginnes 4 keynote
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perlbeginners 3 opening talk
PSGIへの誘い
Perlbeginnes 2 keynote
Hachiojipm 14 LT
Perl Beginners #1 keynote
大ざっぱにオブジェクト指向
Hachioji.pm #13 LT
Alluren of prototype-based OOP
Ad

finally (not finally)