File Coverage

lib/enum/prefix.pm
Criterion Covered Total %
statement 30 30 100.0
branch 3 4 75.0
condition n/a
subroutine 7 7 100.0
pod n/a
total 40 41 97.5


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