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   47246 use strict;
  23         26  
  23         558  
3 23     23   69 use warnings;
  23         22  
  23         369  
4 23     23   63 use Carp;
  23         95  
  23         879  
5              
6 23     23   8879 use IO::Dir;
  23         6813586  
  23         915  
7 23     23   126 use IO::File;
  23         23  
  23         3038  
8              
9 23     23   89 use base qw( Class::Accessor::Fast );
  23         22  
  23         9986  
10              
11             sub list_files
12             {
13 6     6 1 9220 my ($self, $path) = @_;
14              
15 6 100       88 if(!-d $path) {
16 1         6 return $path;
17             }
18              
19 5         41 my $dir = IO::Dir->new($path);
20 5 50       334 if(!$dir) {
21 0         0 croak "Could not open directory $path: $!";
22             }
23              
24 5         6 my @files;
25              
26 5         19 for my $name ($dir->read) {
27 15 100 100     211 next if($name eq '.' || $name eq '..');
28 5         13 my $full_name = "$path/$name";
29 5 100       73 if(-f $full_name) {
    50          
30 3         7 push @files, $full_name;
31             } elsif(-d _ ) {
32 2         18 push @files, $self->list_files($full_name);
33             }
34             }
35              
36 5         15 $dir->close;
37 5         94 return @files;
38             }
39              
40             1;
41             __END__