1b8851fccSafresh1use strict; 2b8851fccSafresh1use warnings; 3b8851fccSafresh1 4b8851fccSafresh1package Test::Tester::Delegate; 5b8851fccSafresh1 6*3d61058aSafresh1our $VERSION = '1.302199'; 75759b3d2Safresh1 85759b3d2Safresh1use Scalar::Util(); 95759b3d2Safresh1 10b8851fccSafresh1use vars '$AUTOLOAD'; 11b8851fccSafresh1 12b8851fccSafresh1sub new 13b8851fccSafresh1{ 14b8851fccSafresh1 my $pkg = shift; 15b8851fccSafresh1 16b8851fccSafresh1 my $obj = shift; 17b8851fccSafresh1 my $self = bless {}, $pkg; 18b8851fccSafresh1 19b8851fccSafresh1 return $self; 20b8851fccSafresh1} 21b8851fccSafresh1 22b8851fccSafresh1sub AUTOLOAD 23b8851fccSafresh1{ 24b8851fccSafresh1 my ($sub) = $AUTOLOAD =~ /.*::(.*?)$/; 25b8851fccSafresh1 26b8851fccSafresh1 return if $sub eq "DESTROY"; 27b8851fccSafresh1 28b8851fccSafresh1 my $obj = $_[0]->{Object}; 29b8851fccSafresh1 30b8851fccSafresh1 my $ref = $obj->can($sub); 31b8851fccSafresh1 shift(@_); 32b8851fccSafresh1 unshift(@_, $obj); 33b8851fccSafresh1 goto &$ref; 34b8851fccSafresh1} 35b8851fccSafresh1 365759b3d2Safresh1sub can { 375759b3d2Safresh1 my $this = shift; 385759b3d2Safresh1 my ($sub) = @_; 395759b3d2Safresh1 405759b3d2Safresh1 return $this->{Object}->can($sub) if Scalar::Util::blessed($this); 415759b3d2Safresh1 425759b3d2Safresh1 return $this->SUPER::can(@_); 435759b3d2Safresh1} 445759b3d2Safresh1 45b8851fccSafresh11; 46