File Coverage

blib/lib/Hydrogen/Topic/Number.pm
Criterion Covered Total %
statement 157 212 74.0
branch 32 110 29.0
condition 12 57 21.0
subroutine 35 44 79.5
pod 17 17 100.0
total 253 440 57.5


line stmt bran cond sub pod time code
1             # This file was autogenerated.
2 2     2   217472 use 5.008001;
  2         9  
3 2     2   12 use strict;
  2         4  
  2         44  
4 2     2   9 use warnings;
  2         5  
  2         99  
5 2     2   11 no warnings qw( void once );
  2         4  
  2         96  
6 2     2   521 use Hydrogen ();
  2         6  
  2         160  
7              
8             package Hydrogen::Topic::Number;
9              
10             our $AUTHORITY = 'cpan:TOBYINK';
11             our $VERSION = '0.021001';
12              
13             =head1 NAME
14              
15             Hydrogen::Topic::Number - functions from Hydrogen::Number applied to C<$_>
16              
17             =head1 VERSION
18              
19             This documentation is for Hydrogen::Topic::Number 0.021001,
20             which is based on Sub::HandlesVia::HandlerLibrary::Number 0.050005.
21              
22             =cut
23              
24             =head1 FUNCTIONS
25              
26             Each function implicitly operates on C<< $_ >>, expecting it to be a numeric scalar.
27              
28             =cut
29              
30 2         15 use Exporter::Shiny qw(
31             abs
32             add
33             ceil
34             cmp
35             div
36             eq
37             floor
38             ge
39             get
40             gt
41             le
42             lt
43             mod
44             mul
45             ne
46             set
47             sub
48 2     2   12 );
  2         14  
49              
50             =head2 C<< abs() >>
51              
52             Operates on C<< $_ >>, which must be a numeric scalar.
53              
54             Finds the absolute value of the current number, updating the original value.
55              
56             =cut
57              
58             sub abs {
59              
60             package Hydrogen::Number::__SANDBOX__;
61 1 50   1 1 349223 @_ == 0
62             or Hydrogen::croak( "Wrong number of parameters for abs; usage: "
63             . "Hydrogen::Topic::Number::abs()" );
64 1         2 1;
65 1         3 ( $_ = abs($_) );
66             }
67              
68             =head2 C<< add( $addend ) >>
69              
70             Operates on C<< $_ >>, which must be a numeric scalar.
71              
72             Arguments: B<< Num >>.
73              
74             Adds a number to the existing number, updating the original value.
75              
76             =cut
77              
78             sub add {
79              
80             package Hydrogen::Number::__SANDBOX__;
81 1     1 1 3354 @_ = do {
82 1         2 my ( %tmp, $tmp );
83              
84 1 50       4 @_ == 1
85             or Hydrogen::croak(
86             "Wrong number of parameters in signature for %s: got %d, %s",
87             "add", scalar(@_), "expected exactly 1 parameters" );
88              
89             # Parameter $_[0] (type: Num)
90             (
91 1 50       2 do {
92              
93             package Hydrogen::Number::__SANDBOX__;
94 2     2   368 use Scalar::Util ();
  2         5  
  2         249  
95 1 50 33     12 defined( $_[0] )
96             && !ref( $_[0] )
97             && Scalar::Util::looks_like_number( $_[0] );
98             }
99             )
100             or Hydrogen::croak(
101             "Type check failed in signature for add: %s should be %s",
102             "\$_[0]", "Num" );
103              
104 1         3 (@_);
105             };
106             (
107 1         2 $_ = do {
108 1         2 my $shv_final_unchecked = $_ + $_[0];
109 1         2 do {
110             (
111 1 50       1 do {
112              
113             package Hydrogen::Number::__SANDBOX__;
114 2     2   12 use Scalar::Util ();
  2         4  
  2         295  
115 1 50 33     6 defined($shv_final_unchecked)
116             && !ref($shv_final_unchecked)
117             && Scalar::Util::looks_like_number(
118             $shv_final_unchecked);
119             }
120             )
121             or Hydrogen::croak(
122             "Type check failed for add: expected %s, got value %s",
123             "Num", $shv_final_unchecked );
124 1         3 $shv_final_unchecked;
125             };
126             }
127             );
128             }
129              
130             =head2 C<< ceil() >>
131              
132             Operates on C<< $_ >>, which must be a numeric scalar.
133              
134             Finds the ceiling of the current number, updating the original value. Like C from L, but in-place.
135              
136             =cut
137              
138             sub ceil {
139              
140             package Hydrogen::Number::__SANDBOX__;
141 0 0   0 1 0 @_ == 0
142             or Hydrogen::croak( "Wrong number of parameters for ceil; usage: "
143             . "Hydrogen::Topic::Number::ceil()" );
144 0         0 1;
145 2     2   657 use POSIX ();
  2         9004  
  2         208  
146 0         0 ( $_ = POSIX::ceil($_) );
147             }
148              
149             =head2 C<< cmp( $num ) >>
150              
151             Operates on C<< $_ >>, which must be a numeric scalar.
152              
153             Arguments: B<< Num >>.
154              
155             Returns C<< $_ <=> $num >>.
156              
157             =cut
158              
159             sub cmp {
160              
161             package Hydrogen::Number::__SANDBOX__;
162 0     0 1 0 @_ = do {
163 0         0 my ( %tmp, $tmp );
164              
165 0 0       0 @_ == 1
166             or Hydrogen::croak(
167             "Wrong number of parameters in signature for %s: got %d, %s",
168             "cmp", scalar(@_), "expected exactly 1 parameters" );
169              
170             # Parameter $_[0] (type: Num)
171             (
172 0 0       0 do {
173              
174             package Hydrogen::Number::__SANDBOX__;
175 2     2   12 use Scalar::Util ();
  2         4  
  2         344  
176 0 0 0     0 defined( $_[0] )
177             && !ref( $_[0] )
178             && Scalar::Util::looks_like_number( $_[0] );
179             }
180             )
181             or Hydrogen::croak(
182             "Type check failed in signature for cmp: %s should be %s",
183             "\$_[0]", "Num" );
184              
185 0         0 (@_);
186             };
187 0         0 $_ <=> $_[0];
188             }
189              
190             =head2 C<< div( $divisor ) >>
191              
192             Operates on C<< $_ >>, which must be a numeric scalar.
193              
194             Arguments: B<< Num >>.
195              
196             Divides the existing number by a number, updating the original value.
197              
198             =cut
199              
200             sub div {
201              
202             package Hydrogen::Number::__SANDBOX__;
203 1     1 1 5868 @_ = do {
204 1         2 my ( %tmp, $tmp );
205              
206 1 50       5 @_ == 1
207             or Hydrogen::croak(
208             "Wrong number of parameters in signature for %s: got %d, %s",
209             "div", scalar(@_), "expected exactly 1 parameters" );
210              
211             # Parameter $_[0] (type: Num)
212             (
213 1 50       1 do {
214              
215             package Hydrogen::Number::__SANDBOX__;
216 2     2   11 use Scalar::Util ();
  2         4  
  2         209  
217 1 50 33     12 defined( $_[0] )
218             && !ref( $_[0] )
219             && Scalar::Util::looks_like_number( $_[0] );
220             }
221             )
222             or Hydrogen::croak(
223             "Type check failed in signature for div: %s should be %s",
224             "\$_[0]", "Num" );
225              
226 1         17 (@_);
227             };
228             (
229 1         37 $_ = do {
230 1         4 my $shv_final_unchecked = $_ / $_[0];
231 1         1 do {
232             (
233 1 50       2 do {
234              
235             package Hydrogen::Number::__SANDBOX__;
236 2     2   12 use Scalar::Util ();
  2         4  
  2         316  
237 1 50 33     8 defined($shv_final_unchecked)
238             && !ref($shv_final_unchecked)
239             && Scalar::Util::looks_like_number(
240             $shv_final_unchecked);
241             }
242             )
243             or Hydrogen::croak(
244             "Type check failed for div: expected %s, got value %s",
245             "Num", $shv_final_unchecked );
246 1         3 $shv_final_unchecked;
247             };
248             }
249             );
250             }
251              
252             =head2 C<< eq( $num ) >>
253              
254             Operates on C<< $_ >>, which must be a numeric scalar.
255              
256             Arguments: B<< Num >>.
257              
258             Returns C<< $_ == $num >>.
259              
260             =cut
261              
262             sub eq {
263              
264             package Hydrogen::Number::__SANDBOX__;
265 0     0 1 0 @_ = do {
266 0         0 my ( %tmp, $tmp );
267              
268 0 0       0 @_ == 1
269             or Hydrogen::croak(
270             "Wrong number of parameters in signature for %s: got %d, %s",
271             "eq", scalar(@_), "expected exactly 1 parameters" );
272              
273             # Parameter $_[0] (type: Num)
274             (
275 0 0       0 do {
276              
277             package Hydrogen::Number::__SANDBOX__;
278 2     2   12 use Scalar::Util ();
  2         4  
  2         284  
279 0 0 0     0 defined( $_[0] )
280             && !ref( $_[0] )
281             && Scalar::Util::looks_like_number( $_[0] );
282             }
283             )
284             or Hydrogen::croak(
285             "Type check failed in signature for eq: %s should be %s",
286             "\$_[0]", "Num" );
287              
288 0         0 (@_);
289             };
290 0         0 $_ == $_[0];
291             }
292              
293             =head2 C<< floor() >>
294              
295             Operates on C<< $_ >>, which must be a numeric scalar.
296              
297             Finds the floor of the current number, updating the original value. Like C from L, but in-place.
298              
299             =cut
300              
301             sub floor {
302              
303             package Hydrogen::Number::__SANDBOX__;
304 0 0   0 1 0 @_ == 0
305             or Hydrogen::croak( "Wrong number of parameters for floor; usage: "
306             . "Hydrogen::Topic::Number::floor()" );
307 0         0 1;
308 2     2   13 use POSIX ();
  2         4  
  2         211  
309 0         0 ( $_ = POSIX::floor($_) );
310             }
311              
312             =head2 C<< ge( $num ) >>
313              
314             Operates on C<< $_ >>, which must be a numeric scalar.
315              
316             Arguments: B<< Num >>.
317              
318             Returns C<< $_ >= $num >>.
319              
320             =cut
321              
322             sub ge {
323              
324             package Hydrogen::Number::__SANDBOX__;
325 0     0 1 0 @_ = do {
326 0         0 my ( %tmp, $tmp );
327              
328 0 0       0 @_ == 1
329             or Hydrogen::croak(
330             "Wrong number of parameters in signature for %s: got %d, %s",
331             "ge", scalar(@_), "expected exactly 1 parameters" );
332              
333             # Parameter $_[0] (type: Num)
334             (
335 0 0       0 do {
336              
337             package Hydrogen::Number::__SANDBOX__;
338 2     2   11 use Scalar::Util ();
  2         5  
  2         479  
339 0 0 0     0 defined( $_[0] )
340             && !ref( $_[0] )
341             && Scalar::Util::looks_like_number( $_[0] );
342             }
343             )
344             or Hydrogen::croak(
345             "Type check failed in signature for ge: %s should be %s",
346             "\$_[0]", "Num" );
347              
348 0         0 (@_);
349             };
350 0         0 $_ >= $_[0];
351             }
352              
353             =head2 C<< get() >>
354              
355             Operates on C<< $_ >>, which must be a numeric scalar.
356              
357             Returns the current value of the number.
358              
359             =cut
360              
361             sub get {
362              
363             package Hydrogen::Number::__SANDBOX__;
364 1 50   1 1 18686 @_ == 0
365             or Hydrogen::croak( "Wrong number of parameters for get; usage: "
366             . "Hydrogen::Topic::Number::get()" );
367 1         7 $_;
368             }
369              
370             =head2 C<< gt( $num ) >>
371              
372             Operates on C<< $_ >>, which must be a numeric scalar.
373              
374             Arguments: B<< Num >>.
375              
376             Returns C<< $_ > $num >>.
377              
378             =cut
379              
380             sub gt {
381              
382             package Hydrogen::Number::__SANDBOX__;
383 0     0 1 0 @_ = do {
384 0         0 my ( %tmp, $tmp );
385              
386 0 0       0 @_ == 1
387             or Hydrogen::croak(
388             "Wrong number of parameters in signature for %s: got %d, %s",
389             "gt", scalar(@_), "expected exactly 1 parameters" );
390              
391             # Parameter $_[0] (type: Num)
392             (
393 0 0       0 do {
394              
395             package Hydrogen::Number::__SANDBOX__;
396 2     2   12 use Scalar::Util ();
  2         5  
  2         426  
397 0 0 0     0 defined( $_[0] )
398             && !ref( $_[0] )
399             && Scalar::Util::looks_like_number( $_[0] );
400             }
401             )
402             or Hydrogen::croak(
403             "Type check failed in signature for gt: %s should be %s",
404             "\$_[0]", "Num" );
405              
406 0         0 (@_);
407             };
408 0         0 $_ > $_[0];
409             }
410              
411             =head2 C<< le( $num ) >>
412              
413             Operates on C<< $_ >>, which must be a numeric scalar.
414              
415             Arguments: B<< Num >>.
416              
417             Returns C<< $_ <= $num >>.
418              
419             =cut
420              
421             sub le {
422              
423             package Hydrogen::Number::__SANDBOX__;
424 0     0 1 0 @_ = do {
425 0         0 my ( %tmp, $tmp );
426              
427 0 0       0 @_ == 1
428             or Hydrogen::croak(
429             "Wrong number of parameters in signature for %s: got %d, %s",
430             "le", scalar(@_), "expected exactly 1 parameters" );
431              
432             # Parameter $_[0] (type: Num)
433             (
434 0 0       0 do {
435              
436             package Hydrogen::Number::__SANDBOX__;
437 2     2   14 use Scalar::Util ();
  2         4  
  2         321  
438 0 0 0     0 defined( $_[0] )
439             && !ref( $_[0] )
440             && Scalar::Util::looks_like_number( $_[0] );
441             }
442             )
443             or Hydrogen::croak(
444             "Type check failed in signature for le: %s should be %s",
445             "\$_[0]", "Num" );
446              
447 0         0 (@_);
448             };
449 0         0 $_ <= $_[0];
450             }
451              
452             =head2 C<< lt( $num ) >>
453              
454             Operates on C<< $_ >>, which must be a numeric scalar.
455              
456             Arguments: B<< Num >>.
457              
458             Returns C<< $_ < $num >>.
459              
460             =cut
461              
462             sub lt {
463              
464             package Hydrogen::Number::__SANDBOX__;
465 0     0 1 0 @_ = do {
466 0         0 my ( %tmp, $tmp );
467              
468 0 0       0 @_ == 1
469             or Hydrogen::croak(
470             "Wrong number of parameters in signature for %s: got %d, %s",
471             "lt", scalar(@_), "expected exactly 1 parameters" );
472              
473             # Parameter $_[0] (type: Num)
474             (
475 0 0       0 do {
476              
477             package Hydrogen::Number::__SANDBOX__;
478 2     2   13 use Scalar::Util ();
  2         3  
  2         347  
479 0 0 0     0 defined( $_[0] )
480             && !ref( $_[0] )
481             && Scalar::Util::looks_like_number( $_[0] );
482             }
483             )
484             or Hydrogen::croak(
485             "Type check failed in signature for lt: %s should be %s",
486             "\$_[0]", "Num" );
487              
488 0         0 (@_);
489             };
490 0         0 $_ < $_[0];
491             }
492              
493             =head2 C<< mod( $divisor ) >>
494              
495             Operates on C<< $_ >>, which must be a numeric scalar.
496              
497             Arguments: B<< Num >>.
498              
499             Finds the current number modulo a divisor, updating the original value.
500              
501             =cut
502              
503             sub mod {
504              
505             package Hydrogen::Number::__SANDBOX__;
506 1     1 1 15385 @_ = do {
507 1         3 my ( %tmp, $tmp );
508              
509 1 50       7 @_ == 1
510             or Hydrogen::croak(
511             "Wrong number of parameters in signature for %s: got %d, %s",
512             "mod", scalar(@_), "expected exactly 1 parameters" );
513              
514             # Parameter $_[0] (type: Num)
515             (
516 1 50       2 do {
517              
518             package Hydrogen::Number::__SANDBOX__;
519 2     2   12 use Scalar::Util ();
  2         9  
  2         172  
520 1 50 33     16 defined( $_[0] )
521             && !ref( $_[0] )
522             && Scalar::Util::looks_like_number( $_[0] );
523             }
524             )
525             or Hydrogen::croak(
526             "Type check failed in signature for mod: %s should be %s",
527             "\$_[0]", "Num" );
528              
529 1         5 (@_);
530             };
531             (
532 1         3 $_ = do {
533 1         3 my $shv_final_unchecked = $_ % $_[0];
534 1         3 do {
535             (
536 1 50       2 do {
537              
538             package Hydrogen::Number::__SANDBOX__;
539 2     2   10 use Scalar::Util ();
  2         28  
  2         315  
540 1 50 33     37 defined($shv_final_unchecked)
541             && !ref($shv_final_unchecked)
542             && Scalar::Util::looks_like_number(
543             $shv_final_unchecked);
544             }
545             )
546             or Hydrogen::croak(
547             "Type check failed for mod: expected %s, got value %s",
548             "Num", $shv_final_unchecked );
549 1         5 $shv_final_unchecked;
550             };
551             }
552             );
553             }
554              
555             =head2 C<< mul( $factor ) >>
556              
557             Operates on C<< $_ >>, which must be a numeric scalar.
558              
559             Arguments: B<< Num >>.
560              
561             Multiplies the existing number by a number, updating the original value.
562              
563             =cut
564              
565             sub mul {
566              
567             package Hydrogen::Number::__SANDBOX__;
568 1     1 1 7230 @_ = do {
569 1         4 my ( %tmp, $tmp );
570              
571 1 50       5 @_ == 1
572             or Hydrogen::croak(
573             "Wrong number of parameters in signature for %s: got %d, %s",
574             "mul", scalar(@_), "expected exactly 1 parameters" );
575              
576             # Parameter $_[0] (type: Num)
577             (
578 1 50       2 do {
579              
580             package Hydrogen::Number::__SANDBOX__;
581 2     2   10 use Scalar::Util ();
  2         5  
  2         193  
582 1 50 33     14 defined( $_[0] )
583             && !ref( $_[0] )
584             && Scalar::Util::looks_like_number( $_[0] );
585             }
586             )
587             or Hydrogen::croak(
588             "Type check failed in signature for mul: %s should be %s",
589             "\$_[0]", "Num" );
590              
591 1         5 (@_);
592             };
593             (
594 1         2 $_ = do {
595 1         4 my $shv_final_unchecked = $_ * $_[0];
596 1         2 do {
597             (
598 1 50       2 do {
599              
600             package Hydrogen::Number::__SANDBOX__;
601 2     2   54 use Scalar::Util ();
  2         7  
  2         287  
602 1 50 33     9 defined($shv_final_unchecked)
603             && !ref($shv_final_unchecked)
604             && Scalar::Util::looks_like_number(
605             $shv_final_unchecked);
606             }
607             )
608             or Hydrogen::croak(
609             "Type check failed for mul: expected %s, got value %s",
610             "Num", $shv_final_unchecked );
611 1         4 $shv_final_unchecked;
612             };
613             }
614             );
615             }
616              
617             =head2 C<< ne( $num ) >>
618              
619             Operates on C<< $_ >>, which must be a numeric scalar.
620              
621             Arguments: B<< Num >>.
622              
623             Returns C<< $_ != $num >>.
624              
625             =cut
626              
627             sub ne {
628              
629             package Hydrogen::Number::__SANDBOX__;
630 0     0 1 0 @_ = do {
631 0         0 my ( %tmp, $tmp );
632              
633 0 0       0 @_ == 1
634             or Hydrogen::croak(
635             "Wrong number of parameters in signature for %s: got %d, %s",
636             "ne", scalar(@_), "expected exactly 1 parameters" );
637              
638             # Parameter $_[0] (type: Num)
639             (
640 0 0       0 do {
641              
642             package Hydrogen::Number::__SANDBOX__;
643 2     2   16 use Scalar::Util ();
  2         4  
  2         281  
644 0 0 0     0 defined( $_[0] )
645             && !ref( $_[0] )
646             && Scalar::Util::looks_like_number( $_[0] );
647             }
648             )
649             or Hydrogen::croak(
650             "Type check failed in signature for ne: %s should be %s",
651             "\$_[0]", "Num" );
652              
653 0         0 (@_);
654             };
655 0         0 $_ != $_[0];
656             }
657              
658             =head2 C<< set( $value ) >>
659              
660             Operates on C<< $_ >>, which must be a numeric scalar.
661              
662             Arguments: B<< Num >>.
663              
664             Sets the number to a new value.
665              
666             =cut
667              
668             sub set {
669              
670             package Hydrogen::Number::__SANDBOX__;
671 1     1 1 7820 @_ = do {
672 1         2 my ( %tmp, $tmp );
673              
674 1 50       4 @_ == 1
675             or Hydrogen::croak(
676             "Wrong number of parameters in signature for %s: got %d, %s",
677             "set", scalar(@_), "expected exactly 1 parameters" );
678              
679             # Parameter $_[0] (type: Num)
680             (
681 1 50       1 do {
682              
683             package Hydrogen::Number::__SANDBOX__;
684 2     2   11 use Scalar::Util ();
  2         4  
  2         235  
685 1 50 33     10 defined( $_[0] )
686             && !ref( $_[0] )
687             && Scalar::Util::looks_like_number( $_[0] );
688             }
689             )
690             or Hydrogen::croak(
691             "Type check failed in signature for set: %s should be %s",
692             "\$_[0]", "Num" );
693              
694 1         3 (@_);
695             };
696             (
697 1         1 $_ = do {
698 1         2 my $shv_final_unchecked = $_[0];
699 1         1 do {
700             (
701 1 50       31 do {
702              
703             package Hydrogen::Number::__SANDBOX__;
704 2     2   12 use Scalar::Util ();
  2         3  
  2         331  
705 1 50 33     8 defined($shv_final_unchecked)
706             && !ref($shv_final_unchecked)
707             && Scalar::Util::looks_like_number(
708             $shv_final_unchecked);
709             }
710             )
711             or Hydrogen::croak(
712             "Type check failed for set: expected %s, got value %s",
713             "Num", $shv_final_unchecked );
714 1         4 $shv_final_unchecked;
715             };
716             }
717             );
718             }
719              
720             =head2 C<< sub( $subtrahend ) >>
721              
722             Operates on C<< $_ >>, which must be a numeric scalar.
723              
724             Arguments: B<< Num >>.
725              
726             Subtracts a number from the existing number, updating the original value.
727              
728             =cut
729              
730             sub sub {
731              
732             package Hydrogen::Number::__SANDBOX__;
733 1     1 1 3043 @_ = do {
734 1         2 my ( %tmp, $tmp );
735              
736 1 50       4 @_ == 1
737             or Hydrogen::croak(
738             "Wrong number of parameters in signature for %s: got %d, %s",
739             "sub", scalar(@_), "expected exactly 1 parameters" );
740              
741             # Parameter $_[0] (type: Num)
742             (
743 1 50       1 do {
744              
745             package Hydrogen::Number::__SANDBOX__;
746 2     2   12 use Scalar::Util ();
  2         6  
  2         199  
747 1 50 33     11 defined( $_[0] )
748             && !ref( $_[0] )
749             && Scalar::Util::looks_like_number( $_[0] );
750             }
751             )
752             or Hydrogen::croak(
753             "Type check failed in signature for sub: %s should be %s",
754             "\$_[0]", "Num" );
755              
756 1         3 (@_);
757             };
758             (
759 1         2 $_ = do {
760 1         2 my $shv_final_unchecked = $_ - $_[0];
761 1         2 do {
762             (
763 1 50       1 do {
764              
765             package Hydrogen::Number::__SANDBOX__;
766 2     2   43 use Scalar::Util ();
  2         5  
  2         237  
767 1 50 33     22 defined($shv_final_unchecked)
768             && !ref($shv_final_unchecked)
769             && Scalar::Util::looks_like_number(
770             $shv_final_unchecked);
771             }
772             )
773             or Hydrogen::croak(
774             "Type check failed for sub: expected %s, got value %s",
775             "Num", $shv_final_unchecked );
776 1         4 $shv_final_unchecked;
777             };
778             }
779             );
780             }
781              
782             1;
783              
784             =head1 EXPORT
785              
786             No functions are exported by this module by default. To import them all (this is usually a bad idea), use:
787              
788             use Hydrogen::Topic::Number -all;
789              
790             To import a particular function, use:
791              
792             use Hydrogen::Topic::Number 'ceil';
793              
794             To rename functions:
795              
796             use Hydrogen::Topic::Number 'ceil' => { -as => 'myfunc' };
797              
798             On Perl 5.37.2+ (or if L is installed) you can import lexically:
799              
800             use Hydrogen::Topic::Number -lexical, 'ceil';
801              
802             See L for more hints on importing.
803              
804             =head1 BUGS
805              
806             Please report any bugs to
807             L.
808              
809             =head1 SEE ALSO
810              
811             L,
812             L,
813             L,
814             L.
815              
816             =head1 AUTHOR
817              
818             Toby Inkster Etobyink@cpan.orgE.
819              
820             =head1 COPYRIGHT AND LICENCE
821              
822             This software is copyright (c) 2022-2025 by Toby Inkster.
823              
824             This is free software; you can redistribute it and/or modify it under
825             the same terms as the Perl 5 programming language system itself.
826              
827             =head1 DISCLAIMER OF WARRANTIES
828              
829             THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
830             WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
831             MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
832