File Coverage

blib/lib/Scalar/Util/Numeric/PP.pm
Criterion Covered Total %
statement 35 35 100.0
branch 28 28 100.0
condition 7 9 77.7
subroutine 9 9 100.0
pod 6 6 100.0
total 85 87 97.7


line stmt bran cond sub pod time code
1             package Scalar::Util::Numeric::PP;
2              
3             our $DATE = '2015-04-12'; # DATE
4             our $VERSION = '0.02'; # VERSION
5              
6 1     1   567 use 5.010001;
  1         3  
  1         35  
7 1     1   4 use strict;
  1         1  
  1         25  
8 1     1   4 use warnings;
  1         1  
  1         474  
9              
10             require Exporter;
11             our @ISA = qw(Exporter);
12             our @EXPORT_OK = qw(
13             isint
14             isnum
15             isnan
16             isinf
17             isneg
18             isfloat
19             );
20              
21             sub isint {
22 17     17 1 20 local $_ = shift;
23 17 100       27 return 0 unless defined;
24 16 100       89 return 1 if /\A[+-]?(?:0|[1-9][0-9]*)\z/;
25 9         16 0;
26             }
27              
28             sub isnan($) {
29 17     17 1 12 local $_ = shift;
30 17 100       26 return 0 unless defined;
31 16 100       47 return 1 if /\A\s*[+-]?nan\s*\z/i;
32 11         21 0;
33             }
34              
35             sub isinf($) {
36 16     16 1 12 local $_ = shift;
37 16 100       22 return 0 unless defined;
38 15 100       45 return 1 if /\A\s*[+-]?inf(?:inity)?\s*\z/i;
39 9         21 0;
40             }
41              
42             sub isneg($) {
43 6     6 1 7 local $_ = shift;
44 6 100       13 return 0 unless defined;
45 5 100       16 return 1 if /\A\s*-/;
46 2         5 0;
47             }
48              
49             sub isnum($) {
50 12     12 1 15 local $_ = shift;
51 12 100       24 return 0 unless defined;
52 11 100       9 return 1 if isint($_);
53 7 100       19 return 1 if isfloat($_);
54 2         4 0;
55             }
56              
57             sub isfloat($) {
58 21     21 1 22 local $_ = shift;
59 21 100       32 return 0 unless defined;
60 20 100 66     140 return 1 if /\A[+-]?(?:0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?\z/
      66        
61             && $1 || $2;
62 12 100 100     14 return 1 if isnan($_) || isinf($_);
63 8         14 0;
64             }
65              
66             1;
67             # ABSTRACT: Pure-perl drop-in replacement/approximation of Scalar::Util::Numeric
68              
69             __END__