Perl:アイディア:リソースの回収
アイディアをメモして置いとく。あと雑記
リソースリークを防ぎつつスクリプトの煩雑化を防ぐ技を考えていた。
gotoと関数オブジェクト (サブルーチンレファレンス) を組み合わせたものを試作した。
開いたリソースはLIFO的にきっちり閉じる。つもり…。
例外処理っぽい単語はだいたいRubyから拝借。
自宅だとPerl使わないから処理系も入ってなくて、ランタイムコンパイラーがやってくれる文法チェックすら通してない。ちゃんと動くかどうかは謎。
use strict; use warnings; Test->new->execute(qw/in.txt out.txt/); { package Test; sub new {bless {}, $_[0]} sub execute { my $this = shift; my $e; my $raise = sub { ($e) = @_; goto rescue; }; my ($fin, $fout) = @_; my ($in, $out, @after); open $in , '<', $fin ? unshift @after, sub {close $in } : $raise->('error'); open $out, '>', $fout ? unshift @after, sub {close $out} : $raise->('error'); while (<$in>) {print {$out} $_ or $raise->('error')} goto ensure; rescue: { print "$e\n"; } ensure: { $_->() for @after; ! $e ? 1 : return; } } }
もうちょっと綺麗にならないかなー。beforeとafterの関係を宣言的に書けると良さそうなんだけども
それと、全く関係ないけど、Perlにもmapcarがほしい。
その他
C
モダンC言語プログラミング 統合開発環境、デザインパターン、エクストリーム・プログラミング、テスト駆動開発、リファクタリング、継続的インテグレーションの活用
- 作者: 花井志生
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2013/10/01
- メディア: 大型本
- この商品を含むブログ (1件) を見る
買ってた。少しづつ読んでる。
リソースリーク対策の話も載ってて、Template Methodパターンでやる話がある。
クイズ
金欠で生活費すら危ういのでかなり抑え気味。
理系魔龍で出没しまくりたいけど非常にダメげな予感。
経済的不安によって絶賛腹壊し中という。夜も眠れない。
きよツール
あまり進んでない。
Venue 8 Proが来年1月らしいしモチベが…。
(手持ちの大きなラップトップで使うのがめんどくさくなってきてしまったらしい)
直近の目標:
- ジャンルと形式をフィルタリングするように
- jarにしてもUTF-8Nを文字化けしないで読み込む
- 25問リピート出題モード追加する
順調なら来春あたりにお試し用に機能限定版公開するかも