WrappedMethod.pm 564 B

1234567891011121314151617181920212223242526272829
  1. package NIC::Bridge::Tie::WrappedMethod;
  2. use strict;
  3. use warnings;
  4. use parent qw(Tie::Scalar);
  5. sub TIESCALAR {
  6. my $class = shift;
  7. my $self = { CONTEXT => shift, FOR => shift, METHOD => shift };
  8. bless($self, $class);
  9. return $self;
  10. }
  11. sub FETCH {
  12. my $self = shift;
  13. my $obj = $self->{FOR};
  14. my $ret = $self->{FOR}->can($self->{METHOD})->($self->{FOR});
  15. return $self->{CONTEXT}->_wrap($ret);
  16. }
  17. sub STORE {
  18. my $self = shift;
  19. my $obj = $self->{FOR};
  20. my $in = shift;
  21. $self->{FOR}->can($self->{METHOD})->($self->{FOR}, $self->{CONTEXT}->_unwrap($in));
  22. }
  23. 1;