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   58030 use warnings;
  2         5  
  2         73  
3 2     2   10 use strict;
  2         5  
  2         74  
4 2     2   89 use 5.006;
  2         12  
  2         233  
5             our $VERSION = '0.03';
6              
7             my $ident = '[^\W_0-9]\w*';
8              
9             sub import
10             {
11 2     2   13 my $class = shift;
12 2         3 my $prefix = shift;
13 2         3 my $name_sub_suffix = shift;
14 2 100       18 @_ or return;
15              
16 1         2 my $pkg = caller() . '::';
17              
18 1         2 my $index = 0;
19              
20 1         2 my @enum;
21 2     2   12 no strict 'refs';
  2         3  
  2         308  
22 1         1 for my $name (@_)
23             {
24 3 50       55 if ( $name =~ /^$ident$/o )
25             {
26 3         4 my $n = $index;
27 3         4 $index++;
28 3     0   16 *{ $pkg . $prefix . $name } = sub(){ $n };
  3         22  
  0         0  
29 3         6 $enum[$n] = $name;
30             }
31             }
32 1     3   3 *{$pkg. $prefix . $name_sub_suffix } = sub($) { $enum[ $_[0] ] };
  1         1485  
  3         812  
33             }
34              
35             1;
36              
37             __END__