I wish the POD parsing was sensitive to dashes; it's disappointing to not have the same functionality as the longer list specification. If you simply need a 'flat' set of commands with simpler argument access, this module is for you. See the RT tickets for a patch that allows nested commands and an overrideable unknown-command handler.
I've read through Dependency.pod, the referenced README, and the examples and I'm still no closer to understanding how to use this than when I started. Where is the API? How do I define dependencies? I suppose I can go look at the tests for a clue, but this hardly seems acceptable.
I was expecting something like,
my $deps = Module::Dependency->new( this => @these, that => @those );
print join "\n", $deps->all()->as_text();
And then followed by explanations of what the all(), as_text(), and new() methods do.
Doesn't handle 'at least one' for required - it's all or nothing
Problems with formatting
When using --man|less, dumps pod and not formatted man page.
Exposing the argument structure in printed help/usage/man is
non-standard; this has the affect of being confusing to the
This is more straightforward than [-]-d[imension].
It may be useful to subclass Euclid for this purpose, e.g.
You have to have rather square-brackety expressions to get double
dashes and optional ='s.
Use variable names instead of %ARGV
You can do use Getopt::Euclid qw( :vars(opt_) ); to have named
variables rather than access %ARGV.
Fewer names for variables
You can do use Getopt::Euclid qw( :minimal_keys ); to not create 'aliases' for every allowable permutation of the switch.