This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Upgrade to Module::CoreList 2.05
[perl5.git] / lib / Module / CoreList.pm
index e3ae795..c14a0de 100644 (file)
@@ -1,7 +1,7 @@
 package Module::CoreList;
 use strict;
 use vars qw/$VERSION %released %patchlevel %version %families/;
-$VERSION = '2.04';
+$VERSION = '2.05';
 
 =head1 NAME
 
@@ -16,6 +16,11 @@ Module::CoreList - what modules shipped with versions of perl
  print Module::CoreList->first_release('File::Spec');       # prints 5.00503
  print Module::CoreList->first_release('File::Spec', 0.82); # prints 5.006001
 
+ print join ', ', Module::CoreList->find_modules(qr/Data/); 
+    # prints 'Data::Dumper'
+ print join ', ', Module::CoreList->find_modules(qr/test::h.*::.*s/i, 5.008008); 
+    # prints 'Test::Harness::Assert, Test::Harness::Straps'
+
  print join ", ", @{ $Module::CoreList::families{5.005} };
     # prints "5.005, 5.00503, 5.00504"
 
@@ -99,6 +104,21 @@ sub first_release {
     return (sort { $released{$a} cmp $released{$b} } @perls)[0];
 }
 
+sub find_modules {
+    my $discard = shift; 
+    my $regex = shift;
+    my @perls = @_;
+    @perls = keys %version unless @perls;
+
+    my %mods;
+    foreach (@perls) {
+        while (my ($k, $v) = each %{$version{$_}}) {
+            $mods{$k}++ if $k =~ $regex;
+        }
+    }
+    return sort keys %mods
+}
+
 
 # when things escaped
 %released = (