-$OpenBSD: Getopt.pod,v 1.1 2020/12/20 15:30:58 daniel Exp $
+$OpenBSD: Getopt.pod,v 1.2 2023/05/21 13:44:56 espie Exp $
=head1 NAME
use OpenBSD::Getopt;
- our($opt_o, $opt_i, $opt_f, $opt_v);
- getopts('oifv:',
- { 'v' => sub {
- ++$opt_v;}
- }
+ my $h = { 'v' =>
+ sub() {
+ ++$opt_v;
+ };
+ };
+ getopts('oifv:', $h);
=head1 DESCRIPTION
-This is similar to L<getopt(3)>. One call to C<getopts($optstring)> parses
+This is similar to L<getopt(3)>. One call to C<getopts($optstring, $h)> parses
all the options using the C<$optstring> as a list of simple switches
(letter) and switches with arguments (letter followed by C<:>).
-Option values are directly written into local variables of the form
-C<$opt_S>, where C<S> is the switch name.
-
-Contrary to L<getopt(3)>, C<$opt_S> is incremented each time the switch is
+Option values are written into the hash C<$h>.
+Contrary to L<getopt(3)>, C<$h-E<gt>{v}> is incremented each time the switch is
seen, to allow for stuff like C<-vv>.
-An optional hash can be used as a second argument, with switches as keys
-and subs as values. When a switch is met, the sub C<$foo> is called as
-C<$foo> for a simple switch and as C<$foo(option_value)> for a switch
+Alternately, a code ref can be put into the hash for a given switch.
+When a switch is seen, the sub C<$foo> is called as
+C<&$foo()> for a simple switch and as C<&$foo(option_value)> for a switch
with argument.