File Coverage

blib/lib/Mo/utils/Perl.pm
Criterion Covered Total %
statement 32 32 100.0
branch 6 6 100.0
condition 3 3 100.0
subroutine 9 9 100.0
pod 1 1 100.0
total 51 51 100.0


line stmt bran cond sub pod time code
1             package Mo::utils::Perl;
2              
3 3     3   142541 use base qw(Exporter);
  3         7  
  3         388  
4 3     3   27 use strict;
  3         20  
  3         129  
5 3     3   1142 use version 0.77;
  3         8303  
  3         19  
6 3     3   233 use warnings;
  3         9  
  3         186  
7              
8 3     3   1161 use English;
  3         6072  
  3         18  
9 3     3   2840 use Error::Pure qw(err);
  3         29360  
  3         2077  
10 3     3   220 use Readonly;
  3         6  
  3         906  
11              
12             Readonly::Array our @EXPORT_OK => qw(check_version);
13              
14             our $VERSION = 0.01;
15              
16             sub check_version {
17 5     5 1 446840 my ($self, $key) = @_;
18              
19 5 100       16 _check_key($self, $key) && return;
20              
21 3         33 eval {
22 3         44 version->parse($self->{$key});
23             };
24 3 100       11 if ($EVAL_ERROR) {
25             err "Parameter '$key' isn't right Perl version.",
26 2         12 'Value', $self->{$key},
27             'Error', $EVAL_ERROR,
28             ;
29             }
30              
31 1         4 return;
32             }
33              
34             sub _check_key {
35 5     5   12 my ($self, $key) = @_;
36              
37 5 100 100     34 if (! exists $self->{$key} || ! defined $self->{$key}) {
38 2         9 return 1;
39             }
40              
41 3         10 return 0;
42             }
43              
44             1;
45              
46             __END__
47              
48             =pod
49              
50             =encoding utf8
51              
52             =head1 NAME
53              
54             Mo::utils::Perl - Mo Perl utilities.
55              
56             =head1 SYNOPSIS
57              
58             use Mo::utils::Perl qw(check_version);
59              
60             check_version($self, $key);
61              
62             =head1 DESCRIPTION
63              
64             Utilities for checking of Perl related values.
65              
66             =head1 SUBROUTINES
67              
68             =head2 C<check_version>
69              
70             check_version($self, $key);
71              
72             I<Since version 0.01.>
73              
74             Check parameter defined by C<$key> which is right Perl version defined in
75             L<version>.
76              
77             Put error if check isn't ok.
78              
79             Returns undef.
80              
81             =head1 ERRORS
82              
83             check_version():
84             Parameter '%s' isn't right Perl version.
85             Error: %s
86             Value: %s
87              
88              
89             =head1 EXAMPLE1
90              
91             =for comment filename=check_version_ok.pl
92              
93             use strict;
94             use warnings;
95              
96             use Mo::utils::Perl qw(check_version);
97              
98             my $self = {
99             'key' => '0.01',
100             };
101             check_version($self, 'key');
102              
103             # Print out.
104             print "ok\n";
105              
106             # Output:
107             # ok
108              
109             =head1 EXAMPLE2
110              
111             =for comment filename=check_version_fail.pl
112              
113             use strict;
114             use warnings;
115              
116             use Error::Pure;
117             use Mo::utils::Perl qw(check_version);
118              
119             $Error::Pure::TYPE = 'Error';
120              
121             my $self = {
122             'key' => 'bad',
123             };
124             check_version($self, 'key');
125              
126             # Print out.
127             print "ok\n";
128              
129             # Output like:
130             # #Error [..Perl.pm:?] Parameter 'key' isn't right Perl version.
131              
132             =head1 DEPENDENCIES
133              
134             L<English>,
135             L<Exporter>,
136             L<Error::Pure>,
137             L<Readonly>,
138             L<version>.
139              
140             =head1 SEE ALSO
141              
142             =over
143              
144             =item L<Mo::utils>
145              
146             Mo utilities.
147              
148             =back
149              
150             =head1 REPOSITORY
151              
152             L<https://github.com/michal-josef-spacek/Mo-utils-Perl>
153              
154             =head1 AUTHOR
155              
156             Michal Josef Špaček L<mailto:skim@cpan.org>
157              
158             L<http://skim.cz>
159              
160             =head1 LICENSE AND COPYRIGHT
161              
162             © 2026 Michal Josef Špaček
163              
164             BSD 2-Clause License
165              
166             =head1 VERSION
167              
168             0.01
169              
170             =cut