File Coverage

blib/lib/Shannon/Entropy.pm
Criterion Covered Total %
statement 20 20 100.0
branch n/a
condition n/a
subroutine 6 6 100.0
pod 1 1 100.0
total 27 27 100.0


line stmt bran cond sub pod time code
1             package Shannon::Entropy;
2              
3 2     2   181942 use 5.006;
  2         6  
4 2     2   7 use strict;
  2         6  
  2         42  
5 2     2   7 use warnings;
  2         21  
  2         85  
6              
7 2     2   829 use Import::Export;
  2         32820  
  2         13  
8              
9 2     2   98 use base qw/Import::Export/;
  2         2  
  2         368  
10              
11             our $VERSION = '1.12';
12              
13             our %EX = (
14             entropy => [qw/all/]
15             );
16              
17             sub entropy {
18 5     5 1 150334 my ($entropy, $len, $p, %t) = (0, length($_[0]));
19 5         66 $t{$_}++ foreach split '', $_[0];
20 5         14 foreach (values %t) {
21 57         58 $p = $_/$len;
22 57         61 $entropy -= $p * log $p;
23             }
24 5         47 return $entropy / log 2;
25             }
26              
27             1;
28              
29             __END__