in reply to Getopt::Long good style?

One thing you can do to earn a few style points but mainly to maximize your use of Getopt::Long is to use a hash. For one thing, it allows you to pass a simple hashref so that you don't end up doing any ugly $main::opt_foo business when you're trying to access your options from another class. And it also makes it easy to have default options.

my %opts = ( 'foo' => 'default_value', 'bar' => 'another_default_value', 'baz' => 'yet_another' ); GetOptions( \%opts, override, default, values, here); My::Class->method( \%opts ); # ... elsewhere in your code ... package My::Class; my $class = shift; my $opts_ref = shift; ...

Also, if you're going to use an anonymous sub for help, it reads a little better if you do:

'h|help' => sub { help() },
then have sub help print out your help text.

--
"A long habit of not thinking a thing wrong, gives it a superficial appearance of being right." -- Thomas Paine
naChoZ

Replies are listed 'Best First'.
Re^2: Getopt::Long good style?
by naChoZ (Curate) on Jul 28, 2004 at 14:06 UTC

    Also worth a mention simply because I think it's nifty, Getopt::Long has an auto_help option. If you throw some POD in your code (specifically a SYNOPSIS section), turning auto_help on will automatically display that section.

    use Getopt::Long qw/:config auto_help/; ... =pod =head1 SYNOPSIS some help text... =cut ...

    --
    "A long habit of not thinking a thing wrong, gives it a superficial appearance of being right." -- Thomas Paine
    naChoZ

Re^2: Getopt::Long good style?
by Skeeve (Parson) on Jul 28, 2004 at 13:43 UTC
    I didn't understand the "hashy" part of GetOpt::Long yet, but it sounds good to me.

    Regarding the
    'h|help' => sub { help() },
    part, I don't get the point. What's the advantage over:
    'h|help' => \&help,

      That way is fine also. I tend to shy away from &'s in general out of personal preference.

      I just like...

      'h|help' => sub { help() }, ... sub help { ... }

      better than...

      'h|help' => \&help, ... my $help = sub { ... }

      --
      "A long habit of not thinking a thing wrong, gives it a superficial appearance of being right." -- Thomas Paine
      naChoZ