App-CPAN-Get
view release on metacpan or search on metacpan
Get/Utils.pm view on Meta::CPAN
package App::CPAN::Get::Utils;
use base qw(Exporter);
use strict;
use warnings;
use Readonly;
Readonly::Array our @EXPORT_OK => qw(process_module_name_and_version);
our $VERSION = 0.14;
# Code from Menlo::CLI::Compat
sub process_module_name_and_version {
my $module_string = shift;
# Plack@1.2 -> Plack~"==1.2"
# BUT don't expand @ in git URLs
$module_string =~ s/^([A-Za-z0-9_:]+)@([v\d\._]+)$/$1~== $2/;
# Plack~1.20, DBI~"> 1.0, <= 2.0"
my ($module_name, $module_version_range);
if ($module_string =~ /\~[v\d\._,\!<>= ]+$/) {
($module_name, $module_version_range)
= split '~', $module_string, 2;
} else {
$module_name = $module_string;
}
return ($module_name, $module_version_range);
}
1;
__END__
=pod
=encoding utf8
=head1 NAME
App::CPAN::Get::Utils - Utilities for App::CPAN::Get.
=head1 SYNOPSIS
use App::CPAN::Get::Utils qw(process_module_name_and_version);
my ($module_name, $module_version_range) = process_module_name_and_version($module_string);
=head1 SUBROUTINES
=head2 C<process_module_name_and_version>
my ($module_name, $module_version_range) = process_module_name_and_version($module_string);
Process module name string.
Returns array with module name and module version range strings.
=head1 EXAMPLE
=for comment filename=process_module_name_and_version.pl
use strict;
use warnings;
use App::CPAN::Get::Utils qw(process_module_name_and_version);
if (@ARGV < 1) {
print STDERR "Usage: $0 module_name[\@module_version]\n";
exit 1;
}
my $module_name_and_version = $ARGV[0];
my ($module_name, $module_version_range) = process_module_name_and_version($module_name_and_version);
print "Module string from input: $module_name_and_version\n";
( run in 0.848 second using v1.01-cache-2.11-cpan-97f6503c9c8 )