for my $field ( @$self{@{$_{FIELDS}}} ) { $field->set_related(AFTER => \@keys ); $field->{MULTI} = 1 if $_{MULTICODE} && ! exists $field->{MULTI}; $field->{ORDERED} = 1 if $_{ORDER} && ! exists $field->{ORDERED}; $field->{CONTEXT_KEYS} = $_{CONTEXT_KEYS} if $_{CONTEXT_KEYS} && ! exists $field->{CONTEXT_KEYS}; if ( $table ) { $field->{TABLE} = $table unless exists $field->{TABLE}; $field->{COLUMN} = $fieldmap->{$field} || "$field" unless exists $field->{COLUMN}; } } if ( $structured_field ) { # Warning here! $fieldmap = {%$fieldmap}; my @pseudo_fields = map { @$_ } values %$structured_field; @$fieldmap{@pseudo_fields} = map { [ $fieldmap->{$_} || $_ ] } @pseudo_fields; } #### use overload '%{}' => sub { my $self = shift; tie my(%h), $self; \%h }; sub TIEHASH { shift }