##
# Delete single key/value pair or element given plain key or array index
##
- my $self = $_[0]->_get_self;
- my $key = $_[1];
+ my $self = shift->_get_self;
+ my ($key, $orig_key) = @_;
+ if ( my $afh = $self->_root->{audit_fh} ) {
+ unless ( $self->_type eq SIG_ARRAY && $key eq 'length' ) {
+ my $lhs = $self->_find_parent;
+ if ( $self->_type eq SIG_HASH ) {
+ $lhs .= "\{$key\}";
+ }
+ else {
+ $lhs .= "\[$_[3]\]";
+ }
+
+ flock( $afh, LOCK_EX );
+ print( $afh "delete $lhs; # " . localtime(time) . "\n" );
+ flock( $afh, LOCK_UN );
+ }
+ }
+
my $md5 = $DIGEST_FUNC->($key);
##
##
my $self = $_[0]->_get_self;
+ if ( my $afh = $self->_root->{audit_fh} ) {
+ my $lhs = $self->_find_parent;
+
+ my $rhs;
+ if ( $self->_type eq SIG_HASH ) {
+ $rhs = '{}';
+ }
+ elsif ( $self->_type eq SIG_ARRAY ) {
+ $rhs = '[]';
+ }
+
+ flock( $afh, LOCK_EX );
+ print( $afh "$lhs = $rhs; # " . localtime(time) . "\n" );
+ flock( $afh, LOCK_UN );
+ }
+
##
# Make sure file is open
##