File Coverage

blib/lib/Object/Method.pm
Criterion Covered Total %
statement 35 35 100.0
branch 3 4 75.0
condition 3 3 100.0
subroutine 8 8 100.0
pod 0 1 0.0
total 49 51 96.0


line stmt bran cond sub pod time code
1             package Object::Method;
2              
3 3     3   947 use strict;
  3         4  
  3         108  
4 3     3   10 use warnings;
  3         2  
  3         67  
5              
6 3     3   11 use Scalar::Util ();
  3         5  
  3         117  
7              
8             our $VERSION = '0.02';
9              
10             sub import {
11 3     3   12 no strict;
  3         3  
  3         490  
12 3 50   3   21 if (@_ > 0) {
13 3         5 *{caller() . "::method"} = \&method;
  3         1520  
14             }
15             }
16              
17             sub method {
18 7     7 0 348 my ($o, $m, $c) = @_;
19              
20 7         56 my $p = Scalar::Util::blessed($o);
21 7         17 my $id = Scalar::Util::refaddr($o);
22              
23 7 100 100     35 unless ($p =~ /#<(\d+)>$/ and $id == $1) {
24 6         8 my $op = $p;
25              
26 6         39 $p =~ s/(?:#<\d+>)?$/#<$id>/;
27              
28             # eval "package $p;";
29 6         24 bless $o, $p;
30             {
31 3     3   16 no strict;
  3         4  
  3         162  
  6         5  
32 6         5 @{$p . "::ISA"}=($op);
  6         60  
33             }
34             }
35              
36             {
37 3     3   14 no strict;
  3         4  
  3         195  
  7         8  
38 7         4 *{$p . "::$m"} = $c;
  7         28  
39             }
40 7         13 return $o;
41             }
42              
43             1;
44             __END__