うじうじいまだにGetOptions

2007/06/26 追記
30行目にバグがあり修正。
結局必須のキー、例えば$arg_priceが正しく設定されたかどうかは泥臭くやるしかないのか。

  1 #!/usr/local/bin/perl
  2 
  3 use strict;
  4 use warnings;
  5 use Getopt::Long;
  6 use Pod::Usage;
(略)
 16 package main;
 17 my $arg_age     = undef;
 18 my $arg_price   = undef;
 19 my $arg_up_per  = undef;
 20 my $arg_help    = undef;
 21 
 22 my $arg_result = GetOptions(
 23     'age=i'         => \$arg_age,
 24     'price=i'       => \$arg_price,
 25     'up_percent=f'  => \$arg_up_per,
 26     'help|man'      => \$arg_help,
 27 ) or pod2usage('unknown option'); 
 28 
 29 pod2usage('show usage') if $arg_help ;

pod2usage('you forget to set some parameter')の部分でしばし悩みました。
せっかく23行目とかで=iで必須としてるのをどこで評価するのか。
GetOptionsの解説ページでは紹介されていないのですね。

www778$ perl count_pay.pl -a a 
Value "a" invalid for option age (number expected)
unknown option
(略)
www778$ perl count_pay.pl -aaaa
Unknown option: aaaa
unknown option
(略)
www778$ perl count_pay.pl -m   
show usage

まだいまいち納得して無いけど、これであきらめます。