読者です 読者をやめる 読者になる 読者になる

aokcub::Blog

/PIC|dsPIC|Perl|Terragen3|風景CG|CSS3/

めも:Getopt::Longで一つのオプションに複数の引数を受け取る

memo Perl

タイトルの日本語が怪しい。


最近ちょっとしたCG関係のツール作ってて,

perl ~/convert_layers.pl  -i input.exr -w 16394 8192 4096

みたいな形で,複数の数値受け取りたいということがありました。

perl ~/convert_layers.pl  -i input.exr -w 16394 -w 8192 -w 4096

ではなく。



CPAN読むと,こうすればできそう。

  use Getopt::Long qw/:config posix_default no_ignore_case gnu_compat bundling/

  ...

  my %opts = (
    input => 'temp.0001.exr',
    output => 'out',
    width => [],
  );
  GetOptions(\%opts, (
    "input|i=s",
    "output|o=s",
    "width|w=i{,}"
  ));

結果
f:id:aokcub:20160723001526p:plain
oh...?



結論。オプションからbundlingを消せ。

  use Getopt::Long qw/:config posix_default no_ignore_case gnu_compat/

  ...

オプションの意味理解せずに使ってたことバレちゃう。
f:id:aokcub:20160723001422p:plain
やったね!



以上