我有一個屬性的穆斯對象,它是哈希:我該如何才能在訪問一個不存在的關鍵字時深入Hoh作爲Moose屬性?
has 'custom_fields' => (
traits => [qw(Hash)],
isa => 'HashRef',
builder => '_build_custom_fields',
handles => {
custom_field => 'accessor',
has_custom_field => 'exists',
custom_fields => 'keys',
has_custom_fields => 'count',
delete_custom_field => 'delete',
},
);
around 'custom_field' => sub {
my $orig = shift // confess;
my $self = shift // confess;
my $field = shift // confess;
confess "Attempt accessing non-existing custom field '$field'"
unless (@_ or $self->has_custom_field($field));
$self->$orig($field, @_);
};
他的作品適合比較簡單,一個水平散列。現在我想允許深度哈希(散列哈希散列......),並且只要嘗試訪問不存在的(可能是深度的)密鑰,就仍然可以使用confess
。
UPDATE 也許某種程度上使用Data::Diver
?