File Coverage

blib/lib/Dicom/File/Detect.pm
Criterion Covered Total %
statement 25 25 100.0
branch 5 6 83.3
condition n/a
subroutine 6 6 100.0
pod 1 1 100.0
total 37 38 97.3


line stmt bran cond sub pod time code
1             package Dicom::File::Detect;
2              
3 3     3   80400 use base qw(Exporter);
  3         18  
  3         488  
4 3     3   23 use strict;
  3         6  
  3         61  
5 3     3   25 use warnings;
  3         17  
  3         128  
6              
7 3     3   1501 use Error::Pure qw(err);
  3         36474  
  3         92  
8 3     3   206 use Readonly;
  3         9  
  3         577  
9              
10             # Constants.
11             Readonly::Array our @EXPORT => qw(dicom_detect_file);
12             Readonly::Scalar our $DCM_MAGIC => qw{DICM};
13              
14             our $VERSION = 0.05;
15              
16             # Detect DICOM file.
17             sub dicom_detect_file {
18 3     3 1 1784 my $file = shift;
19              
20 3         5 my $dcm_flag = 0;
21 3 100       150 open my $fh, '<', $file or err "Cannot open file '$file'.";
22 2         19 my $seek = seek $fh, 128, 0;
23 2         5 my $magic;
24 2         29 my $read = read $fh, $magic, 4;
25 2 50       25 close $fh or err "Cannot close file '$file'.";
26              
27 2 100       9 if ($magic eq $DCM_MAGIC) {
28 1         7 return 1;
29             } else {
30 1         6 return 0;
31             }
32             }
33              
34             1;
35              
36             __END__