これをみてちょっとビビった(まったく本筋とは関係ないところで)。Getopt::Long::GetOptions の第1引数に HashRef 渡して、続いてオプションリストを配列で渡してる...。なんですかその使い方...。
まじで?!と思って試してみた。
#!/usr/bin/env perl
use strict;
use warnings;
use Getopt::Long;
GetOptions(
\my %opt,
qw( foo=s bar=i baz ),
);
$opt{foo} ||= '';
$opt{bar} ||= 0;
$opt{baz} ||= 0;
print $opt{foo}, "\n";
print $opt{bar}, "\n";
print $opt{baz} ? 'ture' : 'false', "\n";
テスト。
% perl getoptions.pl --foo test --bar 123
test
123
false
おぉお。こんな指定できたのかぁ、GetOptions。
おお、どもども!
僕はいつもこの使い方ですねー。
ちなみに、この使い方だと、
perl getoptions.pl -f test
としても $opt{foo} に test が入るんです $opt{f} じゃなくて。そこがこの書き方の便利なとこだと思ってます。
また僕のコードのように port と password がある場合は -p だとエラーになりますが、--pass などであれば $opt{password} に値がちゃんと入ります!
Posted by: Daisuke Murase | Mar 10, 2010 at 01:46
なるほどー。僕も GetOptions 使うときはハッシュ使うのですが、結局 'foo=s' => \$opt{foo} とかしてました...。でも、断然この方法のほうがすっきりしますねー。
Posted by: ziguzagu | Mar 10, 2010 at 10:15