2009年5月21日

perl module Getopt::Long 筆記

Switch模式

GetOptions ( 'verbose' => \$verbose );
設定 --verbose 參數, 當給予--verbose參數時, 會設定參數 $verbose 且值為1

GetOptions ( 'verbose!' => \$verbose );
設定 --verbose -> $verbose = 1, --noverbose -> $verbose = 0

GetOptions ( 'count+' => \$count );
設定 --count -> $count值為參數使用的次數
example:
test.pl --count --count -> 此時得 $count = 2

帶值參數
※參數類型:整數, 浮點數, 字串

GetOptions( 'tag=s' => \$tag );
'='表示此參數一定要有參數值, 若改用':'代替表示參數不一定要有參數值
's'表示傳遞字串參數, 若為'i'表傳遞整數參數, 若為'f'表傳遞浮點數
example:
test.pl --tag=string
or
test.pl --tag string

多參數值的參數
GetOptions ("library=s" => \@libfiles);
參數傳到 @tag
or
GetOptions ("library=s@" => \$libfiles);
參數傳到 @$tag
example:
test.pl --library lib/stdlib --library lib/extlib

hash參數值(有名稱及參數值)

GetOptions ("define=s" => \%defines);
or
GetOptions ("define=s%" => \$defines);
example:
test.pl --define os=linux --define vendor=redhat

參數別名
GetOptions ('length|height=f' => \$length);
第一個名稱為primary name, 其他的名稱為alias(可有多個alias名稱)
當使用hash參數時, 使用primary name作為key值

參數的簡稱及大小寫
GetOptions ('length|height=f' => \$length, "head" => \$head);
若沒有特別設定, Getopt會忽略參數的大小寫, 也就是 -l or -L 指的都
是同一個參數(--length)

沒有留言:

張貼留言