package Common::TiedCode;

sub create : lvalue {
    my ( $package, $coderef ) = @_;

    my $var;
    tie $var, $package, $coderef;
    $var;
}

sub TIESCALAR {
    my ( $package, $coderef ) = @_;
    die "Not a coderef: $coderef" unless ref($coderef) eq 'CODE';
    return bless $coderef, $package;
}

sub STORE { my $tied = shift; $tied->(@_); }
sub FETCH { shift->(); }

###
1;    # Play nicely.
###
