Further to my previous post on option handling in Perl. There is a rather useful Moose extension named MooseX::Getopt
which allows the building of an object directly from a set of command line options. The class attributes are directly translated into an option profile for Getopt::Long
. Here’s a simple example class:
package LCFG::Foo; use Moose; with 'MooseX::Getopt'; has 'logname' => ( is => 'rw', isa => 'Str' ); has 'quiet' => ( is => 'rw', isa => 'Bool', default => 0 ); no Moose; 1;
In the script you can then just do:
#!/usr/bin/perl use strict; use warnings; use LCFG::Foo; my $foo = LCFG::Foo->new_with_options(); if ( !$foo->quiet) { print $foo->logname . "\n"; }
The script can then be called like:
my_script.pl --logname Changes --quiet