package MyDBM;



require SDBM_File;

require Tie::Hash;

@ISA = qw(Tie::Hash);



sub TIEHASH {

    my $type = shift;

    my $ref = SDBM_File->new(@_);

    return bless {delegate => $ref}, $type;

}



sub AUTOLOAD {

    my $self = shift;



    # The Perl interpreter places the name of the

    # message in a variable called $AUTOLOAD.



    # DESTROY messages should never be propagated.

    return if $AUTOLOAD =~ /::DESTROY$/;



    # Remove the package name.

    $AUTOLOAD =~ s/^MyDBM:://;



    # Pass the message to the delegate.

    $self->{delegate}->$AUTOLOAD(@_);

}



package main;

use Fcntl qw( O_RDWR O_CREAT );



tie %number, "MyDBM", "oddnumbers", O_RDWR|O_CREAT, 0666;

$number{beast} = 666;

