# examples/rev_deps-recursive.pl

use strict;
use warnings;
use Term::ANSIColor;
use MetaCPAN::Client;

$|=1;

my $dist  = shift || 'Hijk';
my $mcpan = MetaCPAN::Client->new;

print "\n\n", colored( "* $dist", 'green' ), "\n";
dig( $dist, 0 );

sub dig {
    my $dist  = shift;
    my $level = shift;

    my $res   = $mcpan->reverse_dependencies($dist);

    while ( my $item = $res->next ) {
        if ( $level ) {
            printf "%s%s\n",
                colored( '....' x $level, 'yellow' ),
                $item->distribution;
        } else {
            printf "\n>> %s\n",
                colored( $item->distribution, 'blue' );
        }

        dig( $item->distribution, $level + 1 );
    }
}