benizi has asked for the wisdom of the Perl Monks concerning the following question:
I use Getopt::Long quite a bit, and I'm pretty fond of this idiom:
use Getopt::Long; GetOptions( 'thing=s' => \(my $thing = ''), 'other=s' => \(my $other = ''), 'flag' => \(my $flag = 0), ) or die 'options'; # usually scripts are for my own use
The one thing that always bugged me about this approach is that I have to treat arrays differently. (I really like defining the scalars the way I've done it above. Makes it easy to add or delete them.) This fails:
use Getopt::Long; GetOptions( 'array=s@' => \(my @array) ) or die 'options';
...because the backslash creates a list of references over its operands. Which, in the case of the newly created array, is the empty list. Is there a way to cleverly get the behavior I want? (a replacement for the "\(my @array)" part that would be equivalent in some sense to "my @array; \@array")
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Get reference to newly-created array
by ikegami (Patriarch) on Oct 22, 2007 at 16:33 UTC | |
by benizi (Hermit) on Oct 22, 2007 at 21:58 UTC | |
by ikegami (Patriarch) on Oct 23, 2007 at 01:42 UTC | |
|
Re: Get reference to newly-created array
by almut (Canon) on Oct 22, 2007 at 18:00 UTC | |
by benizi (Hermit) on Oct 22, 2007 at 23:32 UTC |