Sponsoring The Perl Toolchain Summit 2025: Help make this important event another success Learn more

our $DATE = '2016-11-01'; # DATE
our $VERSION = '1.012'; # VERSION
use 5.010;
use strict;
require App::lcpan;
our %SPEC;
$SPEC{'handle_cmd'} = {
v => 1.1,
summary => 'List authors ranked by number of scripts',
args => {
%App::lcpan::common_args,
},
};
sub handle_cmd {
my %args = @_;
my $state = App::lcpan::_init(\%args, 'ro');
my $dbh = $state->{dbh};
my $sql = "SELECT
file.cpanid id,
-- author.fullname name, -- too slow
COUNT(*) AS script_count,
ROUND(100.0 * COUNT(*) / (SELECT COUNT(*) FROM script), 4) script_count_pct
FROM script
-- LEFT JOIN author ON author.cpanid=file.cpanid
LEFT JOIN file ON script.file_id=file.id
GROUP BY file.cpanid
ORDER BY script_count DESC
";
my @res;
my $sth = $dbh->prepare($sql);
$sth->execute();
while (my $row = $sth->fetchrow_hashref) {
push @res, $row;
}
my $resmeta = {};
#$resmeta->{'table.fields'} = [qw/id name script_count script_count_pct/];
$resmeta->{'table.fields'} = [qw/id script_count script_count_pct/];
[200, "OK", \@res, $resmeta];
}
1;
# ABSTRACT: List authors ranked by number of scripts
__END__
=pod
=encoding UTF-8
=head1 NAME
App::lcpan::Cmd::authors_by_script_count - List authors ranked by number of scripts
=head1 VERSION
This document describes version 1.012 of App::lcpan::Cmd::authors_by_script_count (from Perl distribution App-lcpan), released on 2016-11-01.
=head1 FUNCTIONS
=head2 handle_cmd(%args) -> [status, msg, result, meta]
List authors ranked by number of scripts.
This function is not exported.
Arguments ('*' denotes required arguments):
=over 4
=item * B<cpan> => I<dirname>
Location of your local CPAN mirror, e.g. /path/to/cpan.
Defaults to C<~/cpan>.
=item * B<index_name> => I<filename> (default: "index.db")
Filename of index.
=back
Returns an enveloped result (an array).
First element (status) is an integer containing HTTP status code
(200 means OK, 4xx caller error, 5xx function error). Second element
(msg) is a string containing error message, or 'OK' if status is
200. Third element (result) is optional, the actual result. Fourth
element (meta) is called result metadata and is optional, a hash
that contains extra information.
Return value: (any)
=head1 HOMEPAGE
Please visit the project's homepage at L<https://metacpan.org/release/App-lcpan>.
=head1 SOURCE
=head1 BUGS
Please report any bugs or feature requests on the bugtracker website L<https://rt.cpan.org/Public/Dist/Display.html?Name=App-lcpan>
When submitting a bug or request, please include a test-file or a
patch to an existing test-file that illustrates the bug or desired
feature.
=head1 AUTHOR
perlancar <perlancar@cpan.org>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2016 by perlancar@cpan.org.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut