Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw

Re: getopt long, named argument with multiple values

by dasgar (Priest)
on Jan 07, 2013 at 04:21 UTC ( #1011944=note: print w/replies, xml ) Need Help??

in reply to getopt long, named argument with multiple values

but there is a warning that it is experimental and there is no hint as to how to implement it.

Actually, if you keep reading, the perldoc on Getopt::Long, it tells you how to use that feature.

From the perldoc:

This can be accomplished by adding a repeat specifier to the option specification. Repeat specifiers are very similar to the {...} repeat specifiers that can be used with regular expression patterns. For example, the above command line would be handled as follows:

GetOptions('coordinates=f{1,}' => \@coor, 'rgbcolor=i{3}' => \@color);

Taking your example code and input, I tested the following code:

use strict; use warnings; use Getopt::Long; my @list; my $getoptresult = GetOptions('list=s{2}' => \@list); foreach my $item (@list) {print "$item\n";}

Being on Windows, I had to use a double-quotes instead of single-quotes, but here's how the script was called:

perl --list "strA,==,100" "strB,>,1000"

Here's the output:

strA,==,100 strB,>,1000

You'll want to look at the perlre perldoc for more details on what else you can use in "{...} repeat specifiers". In my code, the {1,} is telling Getopt::Long that @list is getting one or more elements.

Replies are listed 'Best First'.
Re^2: getopt long, named argument with multiple values
by jmf11 (Initiate) on Jan 09, 2013 at 00:57 UTC

    Thanks for the help. I am reluctant to use any method in which the documentation says its experimental, but I see now how to use it. Much appreciated.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1011944]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (5)
As of 2018-05-23 17:45 GMT
Find Nodes?
    Voting Booth?