document how this is used... There's nothing that actually uses the
authorespie <espie@openbsd.org>
Sun, 21 May 2023 13:44:56 +0000 (13:44 +0000)
committerespie <espie@openbsd.org>
Sun, 21 May 2023 13:44:56 +0000 (13:44 +0000)
export part, and be explicit about how we call code refs.

usr.sbin/pkg_add/OpenBSD/Getopt.pod

index 182bec9..a4f17fb 100644 (file)
@@ -1,4 +1,4 @@
-$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
 
@@ -8,25 +8,24 @@ OpenBSD::Getopt - Process single-characters switches
 
    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.