Tie::Hash
ハッシュをタイする時に便利なのがTie::Hashモジュール
This module provides some skeletal methods for hash-tying classes.
そもそもハッシュをtieする時ってどんなシーン?ということでperltieを調べてみると
perltie - how to hide an object class in a simple variable
だそう。自分なりに理解すると、データの箱を用意したいが単なるハッシュでは不足、だけどオブジェクトはちょっと大げさ。こういう時にtieを使えば表面上はハッシュとして見せつつ、取得や保存時にFETCHやSTOREメソッドを噛ませることができるので、便利!てな感じです。
使い方
package NewStdHash; use strict; use warnings; use Tie::Hash; use base qw(Tie::StdHash); sub FETCH { my ($self, $key) = @_; warn "key is $key\n"; $self->SUPER::FETCH($_[1]); } 1;
#!/usr/bin/perl use strict; use warnings; use lib '/home/kotaro/pm'; use NewStdHash; tie my %new_std_hash, 'NewStdHash'; $new_std_hash{test} = 'hoge'; print "$new_std_hash{test}\n"; # warnが実行されてからprintされる
まとめ
ずっとtieってどう使うんだと悩んでいたが、ようやくすっきり。