File Coverage

blib/lib/File/VirusScan/Engine.pm
Criterion Covered Total %
statement 32 33 96.9
branch 8 10 80.0
condition 3 3 100.0
subroutine 7 7 100.0
pod 1 1 100.0
total 51 54 94.4


line stmt bran cond sub pod time code
1             package File::VirusScan::Engine;
2 23     23   96694 use strict;
  23         45  
  23         555  
3 23     23   106 use warnings;
  23         33  
  23         517  
4 23     23   119 use Carp;
  23         37  
  23         1076  
5              
6 23     23   8945 use IO::Dir;
  23         221213  
  23         946  
7 23     23   142 use IO::File;
  23         38  
  23         2161  
8              
9 23     23   121 use base qw( Class::Accessor::Fast );
  23         40  
  23         9530  
10              
11             sub list_files
12             {
13 6     6 1 12715 my ($self, $path) = @_;
14              
15 6 100       125 if(!-d $path) {
16 1         6 return $path;
17             }
18              
19 5         48 my $dir = IO::Dir->new($path);
20 5 50       586 if(!$dir) {
21 0         0 croak "Could not open directory $path: $!";
22             }
23              
24 5         14 my @files;
25              
26 5         31 for my $name ($dir->read) {
27 15 100 100     272 next if($name eq '.' || $name eq '..');
28 5         33 my $full_name = "$path/$name";
29 5 100       77 if(-f $full_name) {
    50          
30 3         13 push @files, $full_name;
31             } elsif(-d _ ) {
32 2         36 push @files, $self->list_files($full_name);
33             }
34             }
35              
36 5         20 $dir->close;
37 5         110 return @files;
38             }
39              
40             1;
41             __END__