インスタンス オブジェクトを消したい
そろそろPerl暦1ヶ月になりそうです.たぶん初めてのPerlエントリー!! さてメモ.
Perlでインスタンスしたオブジェクトをとある事情で明示的に消したいと思ったわけですよ.
#その後こういう実装は不要になるようにしたわけですが
@elf undef $object;で解決では?
試してみた.
$ perl -e 'use Data::Dumper; package foo; sub new { $class = shift; bless {}, $class;} sub DESTROY { print "bye!\n"; }package main; $obj = new foo; print Dumper($obj); undef $obj; print Dumper($obj);' $VAR1 = bless( {}, 'foo' ); bye! $VAR1 = undef;
表面的には期待通りの挙動に見える.これ以上深耕するスキルがないのが悔しい.しいていうとperldocいわく
undef EXPR
undef
Undefines the value of EXPR, which must be an lvalue. Use only on a
scalar value, an array (using @
), a hash (using %
), a subroutine
(using &
), or a typeglob (using *
).
だそうな.オブジェクトについては明記されていないように見える.
@elf %$self = ()
コードとしてないわーですが,
#ふつーオブジェクトの削除ではなく,ハッシュの初期化として読むでしょ(んなことないのがPerlの世界?
$ perl -e 'use Data::Dumper; package foo; sub new { $class = shift; bless {}, $class;} sub DESTROY { print "bye!\n"; }package main; $obj = new foo; print Dumper($obj); %$obj = {}; print Dumper($obj);' $VAR1 = bless( {}, 'foo' ); $VAR1 = bless( { 'HASH(0x9cd90ac)' => undef }, 'foo' ); bye!
挙動としてもないわー.
とりあえず記載されていなそうだし実際問題既に不要な話なんだけど,どこの辺をぼちぼち読んでみます
- perlobj - perldoc.perl.org
- perldoc -q undef