Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Try::Tiny再入門
Search
dorapon2000
May 21, 2021
Programming
370
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Try::Tiny再入門
Gotanda.pm#20のLT発表資料です。
dorapon2000
May 21, 2021
More Decks by dorapon2000
See All by dorapon2000
Perlのよい書き方
dorapon2000
0
190
ns-3.29でモジュール開発
dorapon2000
0
1.4k
Other Decks in Programming
See All in Programming
TechTown - Creating Composable Callables in Contemporary C++
rollbear
0
130
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
190
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
150
残高管理から台帳サービスへの進化
artoy
1
200
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
350
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
790
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
170
カツオ、ご期待ください
suneo3476
0
190
dotNET_vulnclicker_intro.pdf
deka_morita
0
140
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
370
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
8
2.2k
Domain-Driven Transformation
hschwentner
2
2.3k
Featured
See All Featured
WENDY [Excerpt]
tessaabrams
14
40k
Six Lessons from altMBA
skipperchong
29
4.5k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
300
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
410
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
The Pragmatic Product Professional
lauravandoore
37
7.5k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
520
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
270
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Amusing Abliteration
ianozsvald
1
350
Transcript
Try::Tiny再入門 2021/5/21 Gotanda.pm#20 dorapon2000
% whoami - 久保田享祐 / @dorapon2000 - モバイルファクトリー エンジニア -
Perl歴1年のひよっこ - 入社してから覚えました - 最近ハマっていること - 著作権法 - 好きな判例は駒込大観音事件(控訴審)です - 読書 - 辻村深月は天才だということに今更ながら気づきました - はてなブログ → https://dorapon2000.hatenablog.com/ 2
Perlでの素朴な例外処理 - https://perldoc.jp/func/eval - perlではeval構文と$@で例外処理を実現する - evalはBLOCK内のコードを一度だけパースして perlとして実行する - eval内部で、構文エラー・実行エラー・
dieが発生した場合、その時点で実行を終了して、 $@にエ ラーメッセージを設定する 3 Error occur: MyError at path/to/script.pl line 1.
Try::Tinyとは - https://metacpan.org/pod/Try::Tiny - Perlで try / catch / finally
文実現させてくれる偉大なモジュール 4
Try::Tinyとは - https://metacpan.org/pod/Try::Tiny - Perlで try / catch / finally
文実現させてくれる偉大なモジュール 5 try {...} catch {...} finally {...} ;
Try::Tinyとは - https://metacpan.org/pod/Try::Tiny - Perlで try / catch / finally
文実現させてくれる偉大なモジュール 6 try {...} catch {...} finally {...} ; 🤔 なにこれ??!?
try / catch / finally の構文解釈 7 try( sub {...},
catch( sub {...}, finally( sub {...} ))) ; 第一引数のプロトタイプに &を指定すると、つまり CODE Refなのは明らかなので subを省略可能。おまけで ,も 第一引数として渡された場合、 &は sub キーワー ドや連続したカンマを 要求しないような無名サブ ルーチンを要求します。 サブルーチンの()は省略可能。省略する とリスト演算子(左方向)の優先順位に 従って、右側から評価されていく
ソースコード https://metacpan.org/release/Try-Tiny/source/lib/Try/Tiny.pm 1. finally が①を受け取る 2. catch が②と①を受け取る 3. try
が③と②と①を受け取る a. ①を ScopeGurd のオブジェクトに登録 b. eval {③} をする c. $@があれば②を実行する d. 終了(ScopeGurdオブジェクトがGCされる) 4. ScopeGurdのDESTROYが発火して①を実行 8 try catch finally ScodeGurd try( sub {③}, catch( sub {②}, finally( sub {①} ))) ; try文 catch文 finally文
finally 9 使われない finallyはblessしてるだけ tryの条件分岐で使う
catch 10 finallyの返り値 仕組みはfinallyと全く同じ
try① finallyのために 11 finally文をScopeGuardに登録 参照されることはないが tryサブルーチンの終了まで保持 catchの返り値
try② try文の実行 12 Try::Tinyも本質は evalと$@による例外処理 try文の実行
try③ catch文の実行 13 catch文の実行 evalで失敗して catch文があれば これにてtryサブルーチンは終了
ScopeGuard 14 tryサブルーチンの終了時に $_finally_guards がGCされる ため DESTROY が実行される finallyの実行 $@
はい🙃 15
Try::Tinyとは(再掲) - https://metacpan.org/pod/Try::Tiny - Perlで try / catch / finally
文実現させてくれる偉大なモジュール 16 try {...} catch {...} finally {...} ;
Try::Tinyとは(再掲) - https://metacpan.org/pod/Try::Tiny - Perlで try / catch / finally
文実現させてくれる偉大なモジュール 17 try {...} catch {...} finally {...} ; 🥳 わかる!!(進化)
明日使えない気づき finallyの後ろにいくつもfinallyを繋げられる 18 catch at /path/to/script.pl line 6. finally 1
at /path/to/script.pl ine 12. finally 2 at /path/to/script.pl line 10. finally 3 at /path/to/script.pl line 8.
参考 - https://ja.stackoverflow.com/questions/7549/ - https://metacpan.org/pod/Try::Tiny - https://perldoc.jp/docs/perl/5.30.0/perlvar.pod - https://perldoc.jp/func/eval -
https://perldoc.jp/docs/perl/5.30.0/perlsub.pod - https://perldoc.jp/docs/perl/5.30.0/perlobj.pod 19
ご清聴ありがとうございました 20