Skip Menu |

Preferred bug tracker

Please visit the preferred bug tracker to report your issue.

This queue is for tickets about the Module-CoreList CPAN distribution.

Report information
The Basics
Id: 20498
Status: resolved
Priority: 0/
Queue: Module-CoreList

People
Owner: Nobody in particular
Requestors: altblue [...] n0i.net
Cc:
AdminCc:

Bug Information
Severity: Normal
Broken in: 2.05
Fixed in: (no value)



Subject: corelist utility enhancements
Two things were usually bothering me when dealing with the "corelist" tool: - the need to use "proper" PerlVersions (e.g. 5.008008) instead of "user friendly" ones (e.g. 5.8.8); - no easy way to determine what was some module's version bundled with a specified Perl release. So here comes this patch that tweaks exactly these two issues. E.g.: $ ./corelist -v 5.8.6 B B 1.07 I also twisted the documentation a little bit, hopefully clarifying the difference (in Synopsis) between "Module Version" and "Perl Version". Please note that the "user friendly version" hack adds a dependency on version.pm.
Subject: corelist-2.05.patch
--- corelist.orig 2006-06-06 19:16:23.000000000 +0300 +++ corelist 2006-07-17 01:12:29.000000000 +0300 @@ -10,8 +10,9 @@ =head1 SYNOPSIS - corelist [-a] [ Modulename [ version ]] [ /Modulenameregex/ [ version ] ] ... - corelist [-v [ version ]] + corelist -v [<PerlVersion>] + corelist [-a] <ModuleName> | /<ModuleRegex>/ [<ModuleVersion>] ... + corelist [-v <PerlVersion>] [ <ModuleName> | /<ModuleNameRegex>/ ] ... =head1 OPTIONS @@ -55,6 +56,8 @@ If you pass a version argument (value of C<$]>, like 5.00503), you get a list of all the modules and their respective versions. +In module filtering context, it can be used as Perl version filter. + =back =cut @@ -64,6 +67,7 @@ use Pod::Usage; use strict; use warnings; +use version (); my %Opts; @@ -73,21 +77,32 @@ pod2usage(-verbose=>2) if $Opts{man}; if(exists $Opts{v} ){ - if( $Opts{v} ) { - if( exists $Module::CoreList::version{$Opts{v}} ) { + if( !$Opts{v} ) { + print "\nModule::CoreList has info on the following perl versions:\n"; + print "$_\n" for sort keys %Module::CoreList::version; + print "\n"; + exit 0; + } + + $Opts{v} = numify_version( $Opts{v} ); + if( !exists $Module::CoreList::version{$Opts{v}} ) { + print "\nModule::CoreList has no info on perl v$Opts{v}\n\n"; + exit 1; + } + + if ( !@ARGV ) { print "\nThe following modules were in perl v$Opts{v} CORE\n"; print "$_ ", $Module::CoreList::version{$Opts{v}}{$_} || " ","\n" for sort keys %{$Module::CoreList::version{$Opts{v}}}; print "\n"; - } else { - print "\nModule::CoreList has no info on perl v$Opts{v}\n\n"; + exit 0; } - } else { - print "\nModule::CoreList has info on the following perl versions:\n"; - print "$_\n" for sort keys %Module::CoreList::version; - print "\n"; } -} elsif (@ARGV) { + +if ( !@ARGV ) { + pod2usage(0); +} + while (@ARGV) { my ($mod, $ver); if ($ARGV[0] =~ /=/) { @@ -118,10 +133,6 @@ } } - - } -} else { - pod2usage(0); } exit(); @@ -129,6 +140,12 @@ sub module_version { my($mod,$ver) = @_; + if ( $Opts{v} ) { + return printf " %-24s %-10s\n", + $mod, + $Module::CoreList::version{$Opts{v}}{$mod} || 'undef'; + } + $ver = "" unless defined $ver; my $ret = Module::CoreList->first_release(@_); @@ -158,6 +175,13 @@ } } +sub numify_version { + my $ver = shift; + if ( index( $ver, q{.}, index( $ver, q{.} ) ) >= 0 ) { + $ver = version->new($ver)->numify; + } + return $ver; +} =head1 EXAMPLES @@ -191,6 +215,29 @@ /Template/ has no match in CORE (or so I think) + $ corelist -v 5.8.8 B + + B 1.09_01 + + $ corelist -v 5.8.8 /^B::/ + + B::Asmdata 1.01 + B::Assembler 0.07 + B::Bblock 1.02_01 + B::Bytecode 1.01_01 + B::C 1.04_01 + B::CC 1.00_01 + B::Concise 0.66 + B::Debug 1.02_01 + B::Deparse 0.71 + B::Disassembler 1.05 + B::Lint 1.03 + B::O 1.00 + B::Showlex 1.02 + B::Stackobj 1.00 + B::Stash 1.00 + B::Terse 1.03_01 + B::Xref 1.01 =head1 COPYRIGHT
Patch applied in 2.06.