File Coverage

blib/lib/Module/CoreList/Utils.pm
Criterion Covered Total %
statement 37 54 68.5
branch 13 28 46.4
condition 3 6 50.0
subroutine 9 12 75.0
pod 5 7 71.4
total 67 107 62.6


line stmt bran cond sub pod time code
1             package Module::CoreList::Utils;
2              
3 1     1   78635 use strict;
  1         22  
  1         31  
4 1     1   5 use warnings;
  1         2  
  1         26  
5 1     1   4407 use Module::CoreList;
  1         9  
  1         13  
6              
7             our $VERSION = '5.20230720';
8             our %utilities;
9              
10             sub utilities {
11 2     2 1 709 my $perl = shift;
12 2 100       4 $perl = shift if eval { $perl->isa(__PACKAGE__) };
  2         19  
13 2 0 33     7 return unless $perl or exists $utilities{$perl};
14 2         4 return sort keys %{ $utilities{$perl} };
  2         22  
15             }
16              
17             sub _released_order { # Sort helper, to make '?' sort after everything else
18             (substr($Module::CoreList::released{$a}, 0, 1) eq "?")
19             ? ((substr($Module::CoreList::released{$b}, 0, 1) eq "?")
20             ? 0
21             : 1)
22             : ((substr($Module::CoreList::released{$b}, 0, 1) eq "?")
23             ? -1
24 3480 0   3480   7567 : $Module::CoreList::released{$a} cmp $Module::CoreList::released{$b} )
    50          
    50          
25             }
26              
27             sub first_release_raw {
28 5     5 0 11 my $util = shift;
29 5 100       10 $util = shift if eval { $util->isa(__PACKAGE__) };
  5         39  
30             #and scalar @_ and $_[0] =~ m#\A[a-zA-Z_][0-9a-zA-Z_]*(?:(::|')[0-9a-zA-Z_]+)*\z#;
31 5         12 my $version = shift;
32              
33             my @perls = $version
34             ? grep { exists $utilities{$_}{ $util } &&
35 0 0       0 $utilities{$_}{ $util } ge $version } keys %utilities
36 5 50       239 : grep { exists $utilities{$_}{ $util } } keys %utilities;
  1405         2574  
37              
38 5         51 return grep { exists $Module::CoreList::released{$_} } @perls;
  1016         1633  
39             }
40              
41             sub first_release_by_date {
42 2     2 1 13 my @perls = &first_release_raw;
43 2 50       8 return unless @perls;
44 2         28 return (sort _released_order @perls)[0];
45             }
46              
47             sub first_release {
48 3     3 1 683 my @perls = &first_release_raw;
49 3 50       12 return unless @perls;
50 3         16 return (sort { $a cmp $b } @perls)[0];
  3150         4029  
51             }
52              
53             sub removed_from {
54 0     0 1 0 my @perls = &removed_raw;
55 0         0 return shift @perls;
56             }
57              
58             sub removed_from_by_date {
59 0     0 1 0 my @perls = sort _released_order &removed_raw;
60 0         0 return shift @perls;
61             }
62              
63             sub removed_raw {
64 0     0 0 0 my $util = shift;
65 0 0       0 $util = shift if eval { $util->isa(__PACKAGE__) };
  0         0  
66 0 0       0 return unless my @perls = sort { $a cmp $b } first_release_raw($util);
  0         0  
67 0         0 @perls = grep { exists $Module::CoreList::released{$_} } @perls;
  0         0  
68 0         0 my $last = pop @perls;
69 0         0 my @removed = grep { $_ > $last } sort { $a cmp $b } keys %utilities;
  0         0  
  0         0  
70 0         0 return @removed;
71             }
72              
73             my %delta = (
74             5 => {
75             changed => {
76             'a2p' => '1',
77             'c2ph' => '1',
78             'cppstdin' => '1',
79             'find2perl' => '1',
80             'pstruct' => '1',
81             's2p' => '1',
82             },
83             removed => {
84             }
85             },
86              
87             5.001 => {
88             delta_from => 5,
89             changed => {
90             'h2xs' => '1',
91             },
92             removed => {
93             }
94             },
95              
96             5.002 => {
97             delta_from => 5.001,
98             changed => {
99             'h2ph' => '1',
100             'perlbug' => '1',
101             'perldoc' => '1',
102             'pod2html' => '1',
103             'pod2latex' => '1',
104             'pod2man' => '1',
105             'pod2text' => '1',
106             },
107             removed => {
108             }
109             },
110              
111             5.00307 => {
112             delta_from => 5.002,
113             changed => {
114             'pl2pm' => '1',
115             },
116             removed => {
117             'cppstdin' => 1,
118             'pstruct' => 1,
119             }
120             },
121              
122             5.004 => {
123             delta_from => 5.00307,
124             changed => {
125             'splain' => '1',
126             },
127             removed => {
128             }
129             },
130              
131             5.005 => {
132             delta_from => 5.00405,
133             changed => {
134             'perlcc' => '1',
135             },
136             removed => {
137             }
138             },
139              
140             5.00503 => {
141             delta_from => 5.005,
142             changed => {
143             },
144             removed => {
145             }
146             },
147              
148             5.00405 => {
149             delta_from => 5.004,
150             changed => {
151             },
152             removed => {
153             }
154             },
155              
156             5.006 => {
157             delta_from => 5.00504,
158             changed => {
159             'dprofpp' => '1',
160             'pod2usage' => '1',
161             'podchecker' => '1',
162             'podselect' => '1',
163             'pstruct' => '1',
164             },
165             removed => {
166             }
167             },
168              
169             5.006001 => {
170             delta_from => 5.006,
171             changed => {
172             },
173             removed => {
174             }
175             },
176              
177             5.007003 => {
178             delta_from => 5.006002,
179             changed => {
180             'libnetcfg' => '1',
181             'perlivp' => '1',
182             'psed' => '1',
183             'xsubpp' => '1',
184             },
185             removed => {
186             }
187             },
188              
189             5.008 => {
190             delta_from => 5.007003,
191             changed => {
192             'enc2xs' => '1',
193             'piconv' => '1',
194             },
195             removed => {
196             }
197             },
198              
199             5.008001 => {
200             delta_from => 5.008,
201             changed => {
202             'cpan' => '1',
203             },
204             removed => {
205             }
206             },
207              
208             5.009 => {
209             delta_from => 5.008009,
210             changed => {
211             },
212             removed => {
213             'corelist' => 1,
214             'instmodsh' => 1,
215             'prove' => 1,
216             }
217             },
218              
219             5.008002 => {
220             delta_from => 5.008001,
221             changed => {
222             },
223             removed => {
224             }
225             },
226              
227             5.006002 => {
228             delta_from => 5.006001,
229             changed => {
230             },
231             removed => {
232             }
233             },
234              
235             5.008003 => {
236             delta_from => 5.008002,
237             changed => {
238             'instmodsh' => '1',
239             'prove' => '1',
240             },
241             removed => {
242             }
243             },
244              
245             5.00504 => {
246             delta_from => 5.00503,
247             changed => {
248             },
249             removed => {
250             }
251             },
252              
253             5.009001 => {
254             delta_from => 5.009,
255             changed => {
256             'instmodsh' => '1',
257             'prove' => '1',
258             },
259             removed => {
260             }
261             },
262              
263             5.008004 => {
264             delta_from => 5.008003,
265             changed => {
266             },
267             removed => {
268             }
269             },
270              
271             5.008005 => {
272             delta_from => 5.008004,
273             changed => {
274             },
275             removed => {
276             }
277             },
278              
279             5.008006 => {
280             delta_from => 5.008005,
281             changed => {
282             },
283             removed => {
284             }
285             },
286              
287             5.009002 => {
288             delta_from => 5.009001,
289             changed => {
290             'corelist' => '1',
291             },
292             removed => {
293             }
294             },
295              
296             5.008007 => {
297             delta_from => 5.008006,
298             changed => {
299             },
300             removed => {
301             }
302             },
303              
304             5.009003 => {
305             delta_from => 5.009002,
306             changed => {
307             'ptar' => '1',
308             'ptardiff' => '1',
309             'shasum' => '1',
310             },
311             removed => {
312             }
313             },
314              
315             5.008008 => {
316             delta_from => 5.008007,
317             changed => {
318             },
319             removed => {
320             }
321             },
322              
323             5.009004 => {
324             delta_from => 5.009003,
325             changed => {
326             'config_data' => '1',
327             },
328             removed => {
329             }
330             },
331              
332             5.009005 => {
333             delta_from => 5.009004,
334             changed => {
335             'cpan2dist' => '1',
336             'cpanp' => '1',
337             'cpanp-run-perl' => '1',
338             },
339             removed => {
340             'perlcc' => 1,
341             }
342             },
343              
344             5.010000 => {
345             delta_from => 5.009005,
346             changed => {
347             },
348             removed => {
349             }
350             },
351              
352             5.008009 => {
353             delta_from => 5.008008,
354             changed => {
355             'corelist' => '1',
356             },
357             removed => {
358             }
359             },
360              
361             5.010001 => {
362             delta_from => 5.010000,
363             changed => {
364             },
365             removed => {
366             }
367             },
368              
369             5.011 => {
370             delta_from => 5.010001,
371             changed => {
372             },
373             removed => {
374             }
375             },
376              
377             5.011001 => {
378             delta_from => 5.011,
379             changed => {
380             },
381             removed => {
382             }
383             },
384              
385             5.011002 => {
386             delta_from => 5.011001,
387             changed => {
388             'perlthanks' => '1',
389             },
390             removed => {
391             }
392             },
393              
394             5.011003 => {
395             delta_from => 5.011002,
396             changed => {
397             },
398             removed => {
399             }
400             },
401              
402             5.011004 => {
403             delta_from => 5.011003,
404             changed => {
405             },
406             removed => {
407             }
408             },
409              
410             5.011005 => {
411             delta_from => 5.011004,
412             changed => {
413             },
414             removed => {
415             }
416             },
417              
418             5.012 => {
419             delta_from => 5.011005,
420             changed => {
421             },
422             removed => {
423             }
424             },
425              
426             5.013 => {
427             delta_from => 5.012005,
428             changed => {
429             },
430             removed => {
431             }
432             },
433              
434             5.012001 => {
435             delta_from => 5.012,
436             changed => {
437             },
438             removed => {
439             }
440             },
441              
442             5.013001 => {
443             delta_from => 5.013,
444             changed => {
445             },
446             removed => {
447             }
448             },
449              
450             5.013002 => {
451             delta_from => 5.013001,
452             changed => {
453             },
454             removed => {
455             }
456             },
457              
458             5.013003 => {
459             delta_from => 5.013002,
460             changed => {
461             },
462             removed => {
463             }
464             },
465              
466             5.013004 => {
467             delta_from => 5.013003,
468             changed => {
469             },
470             removed => {
471             }
472             },
473              
474             5.012002 => {
475             delta_from => 5.012001,
476             changed => {
477             },
478             removed => {
479             }
480             },
481              
482             5.013005 => {
483             delta_from => 5.013004,
484             changed => {
485             },
486             removed => {
487             }
488             },
489              
490             5.013006 => {
491             delta_from => 5.013005,
492             changed => {
493             },
494             removed => {
495             }
496             },
497              
498             5.013007 => {
499             delta_from => 5.013006,
500             changed => {
501             'ptargrep' => '1',
502             },
503             removed => {
504             }
505             },
506              
507             5.013008 => {
508             delta_from => 5.013007,
509             changed => {
510             },
511             removed => {
512             }
513             },
514              
515             5.013009 => {
516             delta_from => 5.013008,
517             changed => {
518             'json_pp' => '1',
519             },
520             removed => {
521             }
522             },
523              
524             5.012003 => {
525             delta_from => 5.012002,
526             changed => {
527             },
528             removed => {
529             }
530             },
531              
532             5.013010 => {
533             delta_from => 5.013009,
534             changed => {
535             },
536             removed => {
537             }
538             },
539              
540             5.013011 => {
541             delta_from => 5.013010,
542             changed => {
543             },
544             removed => {
545             }
546             },
547              
548             5.014 => {
549             delta_from => 5.013011,
550             changed => {
551             },
552             removed => {
553             }
554             },
555              
556             5.014001 => {
557             delta_from => 5.014,
558             changed => {
559             },
560             removed => {
561             }
562             },
563              
564             5.015 => {
565             delta_from => 5.014004,
566             changed => {
567             },
568             removed => {
569             'dprofpp' => 1,
570             }
571             },
572              
573             5.012004 => {
574             delta_from => 5.012003,
575             changed => {
576             },
577             removed => {
578             }
579             },
580              
581             5.015001 => {
582             delta_from => 5.015,
583             changed => {
584             },
585             removed => {
586             }
587             },
588              
589             5.015002 => {
590             delta_from => 5.015001,
591             changed => {
592             },
593             removed => {
594             }
595             },
596              
597             5.015003 => {
598             delta_from => 5.015002,
599             changed => {
600             },
601             removed => {
602             }
603             },
604              
605             5.014002 => {
606             delta_from => 5.014001,
607             changed => {
608             },
609             removed => {
610             }
611             },
612              
613             5.015004 => {
614             delta_from => 5.015003,
615             changed => {
616             },
617             removed => {
618             }
619             },
620              
621             5.015005 => {
622             delta_from => 5.015004,
623             changed => {
624             },
625             removed => {
626             }
627             },
628              
629             5.015006 => {
630             delta_from => 5.015005,
631             changed => {
632             'zipdetails' => '1',
633             },
634             removed => {
635             }
636             },
637              
638             5.015007 => {
639             delta_from => 5.015006,
640             changed => {
641             },
642             removed => {
643             }
644             },
645              
646             5.015008 => {
647             delta_from => 5.015007,
648             changed => {
649             },
650             removed => {
651             }
652             },
653              
654             5.015009 => {
655             delta_from => 5.015008,
656             changed => {
657             },
658             removed => {
659             }
660             },
661              
662             5.016 => {
663             delta_from => 5.015009,
664             changed => {
665             },
666             removed => {
667             }
668             },
669              
670             5.017 => {
671             delta_from => 5.016003,
672             changed => {
673             },
674             removed => {
675             }
676             },
677              
678             5.017001 => {
679             delta_from => 5.017,
680             changed => {
681             },
682             removed => {
683             }
684             },
685              
686             5.017002 => {
687             delta_from => 5.017001,
688             changed => {
689             },
690             removed => {
691             }
692             },
693              
694             5.016001 => {
695             delta_from => 5.016,
696             changed => {
697             },
698             removed => {
699             }
700             },
701              
702             5.017003 => {
703             delta_from => 5.017002,
704             changed => {
705             },
706             removed => {
707             }
708             },
709              
710             5.017004 => {
711             delta_from => 5.017003,
712             changed => {
713             },
714             removed => {
715             }
716             },
717              
718             5.014003 => {
719             delta_from => 5.014002,
720             changed => {
721             },
722             removed => {
723             }
724             },
725              
726             5.017005 => {
727             delta_from => 5.017004,
728             changed => {
729             },
730             removed => {
731             }
732             },
733              
734             5.016002 => {
735             delta_from => 5.016001,
736             changed => {
737             },
738             removed => {
739             }
740             },
741              
742             5.012005 => {
743             delta_from => 5.012004,
744             changed => {
745             },
746             removed => {
747             }
748             },
749              
750             5.017006 => {
751             delta_from => 5.017005,
752             changed => {
753             },
754             removed => {
755             }
756             },
757              
758             5.017007 => {
759             delta_from => 5.017006,
760             changed => {
761             },
762             removed => {
763             }
764             },
765              
766             5.017008 => {
767             delta_from => 5.017007,
768             changed => {
769             },
770             removed => {
771             }
772             },
773              
774             5.017009 => {
775             delta_from => 5.017008,
776             changed => {
777             },
778             removed => {
779             }
780             },
781              
782             5.014004 => {
783             delta_from => 5.014003,
784             changed => {
785             },
786             removed => {
787             }
788             },
789              
790             5.016003 => {
791             delta_from => 5.016002,
792             changed => {
793             },
794             removed => {
795             }
796             },
797              
798             5.017010 => {
799             delta_from => 5.017009,
800             changed => {
801             },
802             removed => {
803             }
804             },
805              
806             5.017011 => {
807             delta_from => 5.017010,
808             changed => {
809             },
810             removed => {
811             }
812             },
813             5.018000 => {
814             delta_from => 5.017011,
815             changed => {
816             },
817             removed => {
818             }
819             },
820             5.018001 => {
821             delta_from => 5.018000,
822             changed => {
823             },
824             removed => {
825             }
826             },
827             5.018002 => {
828             delta_from => 5.018001,
829             changed => {
830             },
831             removed => {
832             }
833             },
834             5.018003 => {
835             delta_from => 5.018000,
836             changed => {
837             },
838             removed => {
839             }
840             },
841             5.018004 => {
842             delta_from => 5.018000,
843             changed => {
844             },
845             removed => {
846             }
847             },
848             5.019000 => {
849             delta_from => 5.018000,
850             changed => {
851             },
852             removed => {
853             'cpan2dist' => '1',
854             'cpanp' => '1',
855             'cpanp-run-perl' => '1',
856             'pod2latex' => '1',
857             }
858             },
859             5.019001 => {
860             delta_from => 5.019000,
861             changed => {
862             },
863             removed => {
864             }
865             },
866             5.019002 => {
867             delta_from => 5.019001,
868             changed => {
869             },
870             removed => {
871             }
872             },
873             5.019003 => {
874             delta_from => 5.019002,
875             changed => {
876             },
877             removed => {
878             }
879             },
880             5.019004 => {
881             delta_from => 5.019003,
882             changed => {
883             },
884             removed => {
885             }
886             },
887             5.019005 => {
888             delta_from => 5.019004,
889             changed => {
890             },
891             removed => {
892             }
893             },
894             5.019006 => {
895             delta_from => 5.019005,
896             changed => {
897             },
898             removed => {
899             }
900             },
901             5.019007 => {
902             delta_from => 5.019006,
903             changed => {
904             },
905             removed => {
906             }
907             },
908             5.019008 => {
909             delta_from => 5.019007,
910             changed => {
911             },
912             removed => {
913             }
914             },
915             5.019009 => {
916             delta_from => 5.019008,
917             changed => {
918             },
919             removed => {
920             }
921             },
922             5.019010 => {
923             delta_from => 5.019009,
924             changed => {
925             },
926             removed => {
927             }
928             },
929             5.019011 => {
930             delta_from => 5.019010,
931             changed => {
932             },
933             removed => {
934             }
935             },
936             5.020000 => {
937             delta_from => 5.019011,
938             changed => {
939             },
940             removed => {
941             }
942             },
943             5.021000 => {
944             delta_from => 5.020000,
945             changed => {
946             },
947             removed => {
948             }
949             },
950             5.021001 => {
951             delta_from => 5.021000,
952             changed => {
953             },
954             removed => {
955             'a2p' => 1,
956             'config_data' => 1,
957             'find2perl' => 1,
958             'psed' => 1,
959             's2p' => 1,
960             }
961             },
962             5.021002 => {
963             delta_from => 5.021001,
964             changed => {
965             },
966             removed => {
967             }
968             },
969             5.021003 => {
970             delta_from => 5.021002,
971             changed => {
972             },
973             removed => {
974             }
975             },
976             5.020001 => {
977             delta_from => 5.02,
978             changed => {
979             },
980             removed => {
981             }
982             },
983             5.021004 => {
984             delta_from => 5.021003,
985             changed => {
986             },
987             removed => {
988             }
989             },
990             5.021005 => {
991             delta_from => 5.021004,
992             changed => {
993             },
994             removed => {
995             }
996             },
997             5.021006 => {
998             delta_from => 5.021005,
999             changed => {
1000             },
1001             removed => {
1002             }
1003             },
1004             5.021007 => {
1005             delta_from => 5.021006,
1006             changed => {
1007             },
1008             removed => {
1009             }
1010             },
1011             5.021008 => {
1012             delta_from => 5.021007,
1013             changed => {
1014             },
1015             removed => {
1016             }
1017             },
1018             5.020002 => {
1019             delta_from => 5.020001,
1020             changed => {
1021             },
1022             removed => {
1023             }
1024             },
1025             5.021009 => {
1026             delta_from => 5.021008,
1027             changed => {
1028             'encguess' => '1',
1029             },
1030             removed => {
1031             }
1032             },
1033             5.021010 => {
1034             delta_from => 5.021009,
1035             changed => {
1036             },
1037             removed => {
1038             }
1039             },
1040             5.021011 => {
1041             delta_from => 5.02101,
1042             changed => {
1043             },
1044             removed => {
1045             }
1046             },
1047             5.022000 => {
1048             delta_from => 5.021011,
1049             changed => {
1050             },
1051             removed => {
1052             }
1053             },
1054             5.023000 => {
1055             delta_from => 5.022000,
1056             changed => {
1057             },
1058             removed => {
1059             }
1060             },
1061             5.023001 => {
1062             delta_from => 5.023,
1063             changed => {
1064             },
1065             removed => {
1066             }
1067             },
1068             5.023002 => {
1069             delta_from => 5.023001,
1070             changed => {
1071             },
1072             removed => {
1073             }
1074             },
1075             5.020003 => {
1076             delta_from => 5.020002,
1077             changed => {
1078             },
1079             removed => {
1080             }
1081             },
1082             5.023003 => {
1083             delta_from => 5.023002,
1084             changed => {
1085             },
1086             removed => {
1087             }
1088             },
1089             5.023004 => {
1090             delta_from => 5.023003,
1091             changed => {
1092             },
1093             removed => {
1094             }
1095             },
1096             5.023005 => {
1097             delta_from => 5.023004,
1098             changed => {
1099             },
1100             removed => {
1101             }
1102             },
1103             5.022001 => {
1104             delta_from => 5.022,
1105             changed => {
1106             },
1107             removed => {
1108             }
1109             },
1110             5.023006 => {
1111             delta_from => 5.023005,
1112             changed => {
1113             },
1114             removed => {
1115             }
1116             },
1117             5.023007 => {
1118             delta_from => 5.023006,
1119             changed => {
1120             },
1121             removed => {
1122             }
1123             },
1124             5.023008 => {
1125             delta_from => 5.023007,
1126             changed => {
1127             },
1128             removed => {
1129             }
1130             },
1131             5.023009 => {
1132             delta_from => 5.023008,
1133             changed => {
1134             },
1135             removed => {
1136             }
1137             },
1138             5.022002 => {
1139             delta_from => 5.022001,
1140             changed => {
1141             },
1142             removed => {
1143             }
1144             },
1145             5.024000 => {
1146             delta_from => 5.023009,
1147             changed => {
1148             },
1149             removed => {
1150             }
1151             },
1152             5.025000 => {
1153             delta_from => 5.024000,
1154             changed => {
1155             },
1156             removed => {
1157             }
1158             },
1159             5.025001 => {
1160             delta_from => 5.025000,
1161             changed => {
1162             },
1163             removed => {
1164             }
1165             },
1166             5.025002 => {
1167             delta_from => 5.025001,
1168             changed => {
1169             },
1170             removed => {
1171             }
1172             },
1173             5.025003 => {
1174             delta_from => 5.025002,
1175             changed => {
1176             },
1177             removed => {
1178             }
1179             },
1180             5.025004 => {
1181             delta_from => 5.025003,
1182             changed => {
1183             },
1184             removed => {
1185             }
1186             },
1187             5.025005 => {
1188             delta_from => 5.025004,
1189             changed => {
1190             },
1191             removed => {
1192             }
1193             },
1194             5.025006 => {
1195             delta_from => 5.025005,
1196             changed => {
1197             },
1198             removed => {
1199             }
1200             },
1201             5.025007 => {
1202             delta_from => 5.025006,
1203             changed => {
1204             },
1205             removed => {
1206             }
1207             },
1208             5.025008 => {
1209             delta_from => 5.025007,
1210             changed => {
1211             },
1212             removed => {
1213             }
1214             },
1215             5.022003 => {
1216             delta_from => 5.022002,
1217             changed => {
1218             },
1219             removed => {
1220             }
1221             },
1222             5.024001 => {
1223             delta_from => 5.024000,
1224             changed => {
1225             },
1226             removed => {
1227             }
1228             },
1229             5.025009 => {
1230             delta_from => 5.025008,
1231             changed => {
1232             },
1233             removed => {
1234             'c2ph' => 1,
1235             'pstruct' => 1,
1236             }
1237             },
1238             5.025010 => {
1239             delta_from => 5.025009,
1240             changed => {
1241             },
1242             removed => {
1243             }
1244             },
1245             5.025011 => {
1246             delta_from => 5.025010,
1247             changed => {
1248             },
1249             removed => {
1250             }
1251             },
1252             5.025012 => {
1253             delta_from => 5.025011,
1254             changed => {
1255             },
1256             removed => {
1257             }
1258             },
1259             5.026000 => {
1260             delta_from => 5.025012,
1261             changed => {
1262             },
1263             removed => {
1264             }
1265             },
1266             5.027000 => {
1267             delta_from => 5.026000,
1268             changed => {
1269             },
1270             removed => {
1271             }
1272             },
1273             5.027001 => {
1274             delta_from => 5.027000,
1275             changed => {
1276             },
1277             removed => {
1278             }
1279             },
1280             5.022004 => {
1281             delta_from => 5.022003,
1282             changed => {
1283             },
1284             removed => {
1285             }
1286             },
1287             5.024002 => {
1288             delta_from => 5.024001,
1289             changed => {
1290             },
1291             removed => {
1292             }
1293             },
1294             5.027002 => {
1295             delta_from => 5.027001,
1296             changed => {
1297             },
1298             removed => {
1299             }
1300             },
1301             5.027003 => {
1302             delta_from => 5.027002,
1303             changed => {
1304             },
1305             removed => {
1306             }
1307             },
1308             5.027004 => {
1309             delta_from => 5.027003,
1310             changed => {
1311             },
1312             removed => {
1313             }
1314             },
1315             5.024003 => {
1316             delta_from => 5.024002,
1317             changed => {
1318             },
1319             removed => {
1320             }
1321             },
1322             5.026001 => {
1323             delta_from => 5.026000,
1324             changed => {
1325             },
1326             removed => {
1327             }
1328             },
1329             5.027005 => {
1330             delta_from => 5.027004,
1331             changed => {
1332             },
1333             removed => {
1334             }
1335             },
1336             5.027006 => {
1337             delta_from => 5.027005,
1338             changed => {
1339             },
1340             removed => {
1341             }
1342             },
1343             5.027007 => {
1344             delta_from => 5.027006,
1345             changed => {
1346             },
1347             removed => {
1348             }
1349             },
1350             5.027008 => {
1351             delta_from => 5.027007,
1352             changed => {
1353             },
1354             removed => {
1355             }
1356             },
1357             5.027009 => {
1358             delta_from => 5.027008,
1359             changed => {
1360             },
1361             removed => {
1362             }
1363             },
1364             5.027010 => {
1365             delta_from => 5.027009,
1366             changed => {
1367             },
1368             removed => {
1369             }
1370             },
1371             5.024004 => {
1372             delta_from => 5.024003,
1373             changed => {
1374             },
1375             removed => {
1376             }
1377             },
1378             5.026002 => {
1379             delta_from => 5.026001,
1380             changed => {
1381             },
1382             removed => {
1383             }
1384             },
1385             5.027011 => {
1386             delta_from => 5.027010,
1387             changed => {
1388             },
1389             removed => {
1390             }
1391             },
1392             5.028000 => {
1393             delta_from => 5.027011,
1394             changed => {
1395             },
1396             removed => {
1397             }
1398             },
1399             5.029000 => {
1400             delta_from => 5.028,
1401             changed => {
1402             },
1403             removed => {
1404             }
1405             },
1406             5.029001 => {
1407             delta_from => 5.029000,
1408             changed => {
1409             },
1410             removed => {
1411             }
1412             },
1413             5.029002 => {
1414             delta_from => 5.029001,
1415             changed => {
1416             },
1417             removed => {
1418             }
1419             },
1420             5.029003 => {
1421             delta_from => 5.029002,
1422             changed => {
1423             },
1424             removed => {
1425             }
1426             },
1427             5.029004 => {
1428             delta_from => 5.029003,
1429             changed => {
1430             },
1431             removed => {
1432             }
1433             },
1434             5.029005 => {
1435             delta_from => 5.029004,
1436             changed => {
1437             },
1438             removed => {
1439             }
1440             },
1441             5.026003 => {
1442             delta_from => 5.026002,
1443             changed => {
1444             },
1445             removed => {
1446             }
1447             },
1448             5.028001 => {
1449             delta_from => 5.028000,
1450             changed => {
1451             },
1452             removed => {
1453             }
1454             },
1455             5.029006 => {
1456             delta_from => 5.029005,
1457             changed => {
1458             },
1459             removed => {
1460             }
1461             },
1462             5.029007 => {
1463             delta_from => 5.029006,
1464             changed => {
1465             },
1466             removed => {
1467             }
1468             },
1469             5.029008 => {
1470             delta_from => 5.029007,
1471             changed => {
1472             },
1473             removed => {
1474             }
1475             },
1476             5.029009 => {
1477             delta_from => 5.029008,
1478             changed => {
1479             },
1480             removed => {
1481             }
1482             },
1483             5.028002 => {
1484             delta_from => 5.028001,
1485             changed => {
1486             },
1487             removed => {
1488             }
1489             },
1490             5.029010 => {
1491             delta_from => 5.029009,
1492             changed => {
1493             },
1494             removed => {
1495             }
1496             },
1497             5.030000 => {
1498             delta_from => 5.029010,
1499             changed => {
1500             },
1501             removed => {
1502             }
1503             },
1504             5.031000 => {
1505             delta_from => 5.03,
1506             changed => {
1507             },
1508             removed => {
1509             }
1510             },
1511             5.031001 => {
1512             delta_from => 5.031,
1513             changed => {
1514             },
1515             removed => {
1516             'podselect' => 1,
1517             }
1518             },
1519             5.031002 => {
1520             delta_from => 5.031001,
1521             changed => {
1522             },
1523             removed => {
1524             }
1525             },
1526             5.031003 => {
1527             delta_from => 5.031002,
1528             changed => {
1529             },
1530             removed => {
1531             }
1532             },
1533             5.031004 => {
1534             delta_from => 5.031003,
1535             changed => {
1536             },
1537             removed => {
1538             }
1539             },
1540             5.031005 => {
1541             delta_from => 5.031004,
1542             changed => {
1543             },
1544             removed => {
1545             }
1546             },
1547             5.030001 => {
1548             delta_from => 5.03,
1549             changed => {
1550             },
1551             removed => {
1552             }
1553             },
1554             5.031006 => {
1555             delta_from => 5.031005,
1556             changed => {
1557             'streamzip' => '1',
1558             },
1559             removed => {
1560             }
1561             },
1562             5.031007 => {
1563             delta_from => 5.031006,
1564             changed => {
1565             },
1566             removed => {
1567             }
1568             },
1569             5.031008 => {
1570             delta_from => 5.031007,
1571             changed => {
1572             },
1573             removed => {
1574             }
1575             },
1576             5.031009 => {
1577             delta_from => 5.031008,
1578             changed => {
1579             },
1580             removed => {
1581             }
1582             },
1583             5.030002 => {
1584             delta_from => 5.030001,
1585             changed => {
1586             },
1587             removed => {
1588             }
1589             },
1590             5.031010 => {
1591             delta_from => 5.031009,
1592             changed => {
1593             },
1594             removed => {
1595             }
1596             },
1597             5.031011 => {
1598             delta_from => 5.031010,
1599             changed => {
1600             },
1601             removed => {
1602             }
1603             },
1604             5.028003 => {
1605             delta_from => 5.028002,
1606             changed => {
1607             },
1608             removed => {
1609             }
1610             },
1611             5.030003 => {
1612             delta_from => 5.030002,
1613             changed => {
1614             },
1615             removed => {
1616             }
1617             },
1618             5.032000 => {
1619             delta_from => 5.031011,
1620             changed => {
1621             },
1622             removed => {
1623             }
1624             },
1625             5.033000 => {
1626             delta_from => 5.032,
1627             changed => {
1628             },
1629             removed => {
1630             }
1631             },
1632             5.033001 => {
1633             delta_from => 5.033000,
1634             changed => {
1635             },
1636             removed => {
1637             }
1638             },
1639             5.033002 => {
1640             delta_from => 5.033001,
1641             changed => {
1642             },
1643             removed => {
1644             }
1645             },
1646             5.033003 => {
1647             delta_from => 5.033002,
1648             changed => {
1649             },
1650             removed => {
1651             }
1652             },
1653             5.033004 => {
1654             delta_from => 5.033003,
1655             changed => {
1656             },
1657             removed => {
1658             }
1659             },
1660             5.033005 => {
1661             delta_from => 5.033004,
1662             changed => {
1663             },
1664             removed => {
1665             }
1666             },
1667             5.033006 => {
1668             delta_from => 5.033005,
1669             changed => {
1670             },
1671             removed => {
1672             }
1673             },
1674             5.032001 => {
1675             delta_from => 5.032000,
1676             changed => {
1677             },
1678             removed => {
1679             }
1680             },
1681             5.033007 => {
1682             delta_from => 5.033006,
1683             changed => {
1684             },
1685             removed => {
1686             }
1687             },
1688             5.033008 => {
1689             delta_from => 5.033007,
1690             changed => {
1691             },
1692             removed => {
1693             }
1694             },
1695             5.033009 => {
1696             delta_from => 5.033008,
1697             changed => {
1698             },
1699             removed => {
1700             }
1701             },
1702             5.034000 => {
1703             delta_from => 5.033009,
1704             changed => {
1705             },
1706             removed => {
1707             }
1708             },
1709             5.035000 => {
1710             delta_from => 5.034000,
1711             changed => {
1712             },
1713             removed => {
1714             }
1715             },
1716             5.035001 => {
1717             delta_from => 5.035,
1718             changed => {
1719             },
1720             removed => {
1721             }
1722             },
1723             5.035002 => {
1724             delta_from => 5.035001,
1725             changed => {
1726             },
1727             removed => {
1728             }
1729             },
1730             5.035003 => {
1731             delta_from => 5.035002,
1732             changed => {
1733             },
1734             removed => {
1735             }
1736             },
1737             5.035004 => {
1738             delta_from => 5.035003,
1739             changed => {
1740             },
1741             removed => {
1742             }
1743             },
1744             5.035005 => {
1745             delta_from => 5.035004,
1746             changed => {
1747             },
1748             removed => {
1749             }
1750             },
1751             5.035006 => {
1752             delta_from => 5.035005,
1753             changed => {
1754             },
1755             removed => {
1756             }
1757             },
1758             5.035007 => {
1759             delta_from => 5.035006,
1760             changed => {
1761             },
1762             removed => {
1763             }
1764             },
1765             5.035008 => {
1766             delta_from => 5.035007,
1767             changed => {
1768             },
1769             removed => {
1770             }
1771             },
1772             5.035009 => {
1773             delta_from => 5.035008,
1774             changed => {
1775             },
1776             removed => {
1777             }
1778             },
1779             5.034001 => {
1780             delta_from => 5.034000,
1781             changed => {
1782             },
1783             removed => {
1784             }
1785             },
1786             5.035010 => {
1787             delta_from => 5.035009,
1788             changed => {
1789             },
1790             removed => {
1791             }
1792             },
1793             5.035011 => {
1794             delta_from => 5.035010,
1795             changed => {
1796             },
1797             removed => {
1798             }
1799             },
1800             5.036000 => {
1801             delta_from => 5.035011,
1802             changed => {
1803             },
1804             removed => {
1805             }
1806             },
1807             5.037000 => {
1808             delta_from => 5.036000,
1809             changed => {
1810             },
1811             removed => {
1812             }
1813             },
1814             5.037001 => {
1815             delta_from => 5.037,
1816             changed => {
1817             },
1818             removed => {
1819             }
1820             },
1821             5.037002 => {
1822             delta_from => 5.037001,
1823             changed => {
1824             },
1825             removed => {
1826             }
1827             },
1828             5.037003 => {
1829             delta_from => 5.037002,
1830             changed => {
1831             },
1832             removed => {
1833             }
1834             },
1835             5.037004 => {
1836             delta_from => 5.037003,
1837             changed => {
1838             },
1839             removed => {
1840             }
1841             },
1842             5.037005 => {
1843             delta_from => 5.037004,
1844             changed => {
1845             },
1846             removed => {
1847             }
1848             },
1849             5.037006 => {
1850             delta_from => 5.037005,
1851             changed => {
1852             },
1853             removed => {
1854             }
1855             },
1856             5.037007 => {
1857             delta_from => 5.037006,
1858             changed => {
1859             },
1860             removed => {
1861             }
1862             },
1863             5.037008 => {
1864             delta_from => 5.037007,
1865             changed => {
1866             },
1867             removed => {
1868             }
1869             },
1870             5.037009 => {
1871             delta_from => 5.037008,
1872             changed => {
1873             },
1874             removed => {
1875             }
1876             },
1877             5.037010 => {
1878             delta_from => 5.037009,
1879             changed => {
1880             },
1881             removed => {
1882             }
1883             },
1884             5.037011 => {
1885             delta_from => 5.03701,
1886             changed => {
1887             },
1888             removed => {
1889             }
1890             },
1891             5.036001 => {
1892             delta_from => 5.036000,
1893             changed => {
1894             },
1895             removed => {
1896             }
1897             },
1898             5.038000 => {
1899             delta_from => 5.037011,
1900             changed => {
1901             },
1902             removed => {
1903             }
1904             },
1905             5.039001 => {
1906             delta_from => 5.038,
1907             changed => {
1908             },
1909             removed => {
1910             }
1911             },
1912             );
1913              
1914             %utilities = Module::CoreList::_undelta(\%delta);
1915              
1916             # Create aliases with trailing zeros for $] use
1917              
1918             $utilities{'5.000'} = $utilities{5};
1919              
1920             _create_aliases(\%utilities);
1921              
1922             sub _create_aliases {
1923 1     1   3 my ($hash) = @_;
1924              
1925 1         43 for my $version (keys %$hash) {
1926 242 100       588 next unless $version >= 5.010;
1927              
1928 212         595 my $padded = sprintf "%0.6f", $version;
1929              
1930             # If the version in string form isn't the same as the numeric version,
1931             # alias it.
1932 212 100 66     509 if ($padded ne $version && $version == $padded) {
1933 39         110 $hash->{$padded} = $hash->{$version};
1934             }
1935             }
1936             }
1937              
1938             'foo';
1939              
1940             =pod
1941              
1942             =head1 NAME
1943              
1944             Module::CoreList::Utils - what utilities shipped with versions of perl
1945              
1946             =head1 SYNOPSIS
1947              
1948             use Module::CoreList::Utils;
1949              
1950             print $Module::CoreList::Utils::utilities{5.009003}{ptar}; # prints 1
1951              
1952             print Module::CoreList::Utils->first_release('corelist');
1953             # prints 5.008009
1954              
1955             print Module::CoreList::Utils->first_release_by_date('corelist');
1956             # prints 5.009002
1957              
1958             =head1 DESCRIPTION
1959              
1960             Module::CoreList::Utils provides information on which core and dual-life utilities shipped
1961             with each version of L.
1962              
1963             It provides a number of mechanisms for querying this information.
1964              
1965             There is a functional programming API available for programmers to query
1966             information.
1967              
1968             Programmers may also query the contained hash structure to find relevant
1969             information.
1970              
1971             =head1 FUNCTIONS API
1972              
1973             These are the functions that are available, they may either be called as functions or class methods:
1974              
1975             Module::CoreList::Utils::first_release('corelist'); # as a function
1976              
1977             Module::CoreList::Utils->first_release('corelist'); # class method
1978              
1979             =over
1980              
1981             =item C
1982              
1983             Requires a perl version as an argument, returns a list of utilities that shipped with
1984             that version of perl, or undef/empty list if that perl doesn't exist.
1985              
1986             =item C
1987              
1988             Requires a UTILITY name as an argument, returns the perl version when that utility first
1989             appeared in core as ordered by perl version number or undef ( in scalar context )
1990             or an empty list ( in list context ) if that utility is not in core.
1991              
1992             =item C
1993              
1994             Requires a UTILITY name as an argument, returns the perl version when that utility first
1995             appeared in core as ordered by release date or undef ( in scalar context )
1996             or an empty list ( in list context ) if that utility is not in core.
1997              
1998             =item C
1999              
2000             Takes a UTILITY name as an argument, returns the first perl version where that utility
2001             was removed from core. Returns undef if the given utility was never in core or remains
2002             in core.
2003              
2004             =item C
2005              
2006             Takes a UTILITY name as an argument, returns the first perl version by release date where that
2007             utility was removed from core. Returns undef if the given utility was never in core or remains
2008             in core.
2009              
2010             =back
2011              
2012             =head1 DATA STRUCTURES
2013              
2014             These are the hash data structures that are available:
2015              
2016             =over
2017              
2018             =item C<%Module::CoreList::Utils::utilities>
2019              
2020             A hash of hashes that is keyed on perl version as indicated
2021             in $]. The second level hash is utility / defined pairs.
2022              
2023             =back
2024              
2025             =head1 AUTHOR
2026              
2027             Chris C Williams
2028              
2029             Currently maintained by the perl 5 porters Eperl5-porters@perl.orgE.
2030              
2031             This module is the result of archaeology undertaken during QA Hackathon
2032             in Lancaster, April 2013.
2033              
2034             =head1 LICENSE
2035              
2036             Copyright (C) 2013 Chris Williams. All Rights Reserved.
2037              
2038             This module is free software; you can redistribute it and/or modify it
2039             under the same terms as Perl itself.
2040              
2041             =head1 SEE ALSO
2042              
2043             L, L, L, L
2044              
2045             =cut