File Coverage

blib/lib/Acme/Class/Std.pm
Criterion Covered Total %
statement 18 18 100.0
branch 2 2 100.0
condition 6 9 66.6
subroutine 5 5 100.0
pod 0 1 0.0
total 31 35 88.5


line stmt bran cond sub pod time code
1             package Acme::Class::Std;
2              
3 2     2   25237 use strict;
  2         4  
  2         128  
4              
5             require Exporter;
6 2     2   1540 use Class::Std();
  2         22596  
  2         57  
7              
8 2     2   16 use vars qw($VERSION);
  2         10  
  2         682  
9             *ISA = \*Class::Std::ISA;
10             *EXPORT = \*Class::Std::EXPORT;
11             *EXPORT_OK = \*Class::Std::EXPORT_OK;
12             *EXPORT_TAGS = \*Class::Std::EXPORT_TAGS;
13              
14             $VERSION = '0.01';
15              
16             my $count = "ACME";
17             my %enhanced;
18             my $all = 0;
19              
20             sub import {
21 2     2   22 $enhanced{+caller}++;
22 2         8 goto &Class::Std::import;
23             }
24              
25             sub ID ($) {
26 5     5 0 3850 my ($package, undef, undef, $sub) = caller 1;
27 5 100 66     54 if ($sub eq 'Class::Std::new' && $_[0]->isa('SCALAR')
      66        
      66        
28             && ($all || $enhanced{ref $_[0]})) {
29             # Strangely, it seems that one can dup an unopened file handle without
30             # warnings.
31 1         63 eval "open $count, '<&dead'";
32 1         3 my $ref = *{delete $Acme::Class::Std::{$count++}}{IO};
  1         4  
33 1         3 $_[0] = bless $ref, ref $_[0];
34             }
35 5         22 goto &Scalar::Util::refaddr;
36             }
37              
38             {
39             local $^W;
40             *Class::Std::ID = \&ID;
41             }
42              
43             __END__