File Coverage

blib/lib/String/Compare/Length.pm
Criterion Covered Total %
statement 23 23 100.0
branch n/a
condition n/a
subroutine 6 6 100.0
pod 3 4 75.0
total 32 33 96.9


line stmt bran cond sub pod time code
1             package String::Compare::Length;
2              
3 1     1   33225 use strict;
  1         3  
  1         35  
4 1     1   5 use warnings;
  1         2  
  1         432  
5              
6             our @ISA = qw(Exporter);
7             our @EXPORT = qw(compare_array compare_arrays compare_hoa);
8             our $VERSION = '0.04';
9              
10             sub array_avg_length {
11 6     6 0 10 my $array = shift;
12 6         7 my $total_length = 0;
13 6         10 for (@$array) {
14 6         13 $total_length += length $_;
15             }
16 6         11 my $average_length = $total_length/@$array;
17 6         16 return $average_length;
18             }
19              
20             sub compare_array ($\@){
21 4     4 1 18 my ($string, $array) = @_;
22 4         5 my $string_length = length $string;
23 4         9 my $average_length = array_avg_length($array);
24 4         25 return abs($string_length - $average_length);
25             }
26              
27             sub compare_hoa ($\%){
28 2     2 1 4 my ($string, $hoa) = @_;
29 2         5 my %diff_hash = ();
30 2         10 while (my ($key,$value) = each %$hoa) {
31 2         6 $diff_hash{$key} = compare_array($string, @$value);
32             }
33 2         10 return \%diff_hash;
34             }
35              
36             sub compare_arrays (\@\@){
37 1     1 1 2 my ($arr1, $arr2) = @_;
38 1         4 return abs(array_avg_length($arr1) - array_avg_length($arr2));
39             }
40              
41             1;
42             __END__