複数同時にlocal化したいばやい
あけましておめでとうございます、ってもう2月かよ!
今日は物凄くどうでも良くて、凄まじく応用範囲の狭い小ネタでも提供します。
%SIGに同じ関数登録しようとして、
local $SIG{$_} = sub {...} for qw/INT TERM ALRM .../;みたいなことをしたんだが。うまくいかなかった。
どうも、後置forの前は見えないスコープがあるようだ。localが効いてない。
後置ループにもスコープがある? - Practice of Programming
ということで、あるデータを複数同時にlocal化したいようなばやいについてです。
my @key = qw/INT TERM ALRM/; my $sub = sub {}; { local @SIG{@key} = ($sub) x @key; # ローカル化されるお! }
あとmapとか使えば色々な初期値を入れることも可能。
使うケースあんま無いと思いますが一応できるってことだけ。
今年もよろしくおねがいします。