File Coverage

lib/enum/prefix.pm
Criterion Covered Total %
statement 29 30 96.6
branch 3 4 75.0
condition n/a
subroutine 6 7 85.7
pod n/a
total 38 41 92.6


line stmt bran cond sub pod time code
1             package enum::prefix;
2 2     2   42799 use warnings;
  2         3  
  2         57  
3 2     2   7 use strict;
  2         2  
  2         60  
4 2     2   39 use 5.006;
  2         8  
  2         181  
5             our $VERSION = '0.04';
6              
7             my $ident = '[^\W_0-9]\w*';
8              
9             sub import
10             {
11 2     2   12 my $class = shift;
12 2         2 my $prefix = shift;
13 2         2 my $name_sub_suffix = shift;
14 2 100       12 @_ or return;
15              
16 1         2 my $pkg = caller() . '::';
17              
18 1         2 my $index = 0;
19              
20 1         1 my @enum;
21 2     2   8 no strict 'refs';
  2         3  
  2         249  
22 1         1 for my $name (@_)
23             {
24 3 50       56 if ( $name =~ /^$ident$/o )
25             {
26 3         4 my $n = $index;
27 3         3 $index++;
28 3     0   17 *{ $pkg . $prefix . $name } = sub(){ $n };
  3         20  
  0         0  
29 3         7 $enum[$n] = $name;
30             }
31             }
32 1     3   3 *{$pkg. $prefix . $name_sub_suffix } = sub($) { $enum[ $_[0] ] };
  1         1382  
  3         1266  
33             }
34              
35             1;
36              
37             __END__