[Perl] Getopt 函數來接收使用者參數的使用

來源:互聯網
上載者:User

 我們在linux常常用到一個程式需要加入參數,現在瞭解一下perl中的有關控制參數的函數.getopt.在linux有的參數有二種形式.一種是–help,另一種是-h.也就是-和–的分別.–表示完整參數.-表示簡化參數.

在perl中也分這二種.

Getopt::Std模組的功能: 初始化perl命令列中所接受的參數,簡化了命令列參數的解析。

簡化參數例子:

12345678910
#!/usr/bin/perl -wuse strict;use Getopt::Std; use vars qw($opt_a $opt_b $opt_c);getopts('a:b:c:'); print "\$opt_a =>; $opt_a\n" if $opt_a;print "\$opt_b =>; $opt_b\n" if $opt_b;print "\$opt_c =>; $opt_c\n" if $opt_c;

輸出如下:

[root@mail test]# ./getopt.pl -a aa -b bb -c cc

$opt_a =>; aa

$opt_b =>; bb $opt_c =>; cc

 

完整參數

12345678910111213141516171819202122232425
 #!/usr/bin/perl  use Getopt::Long;  Getopt::Long::GetOptions(                    'page=i'    => \$page,                   'onoff!'    => \$onoff,                     'help'      => \$wants_help,                  'name=s'    => \$name,                  'number:i' => \$number);  } if(defined($page)){   print "page flag set to $page " }if(defined($onoff)){           print "onoff flag set to $onoff ";}if(defined($wants_help)){           print "help flag set to $wants_help ";}if(defined($name)){           print "name flag set to $name ";}if(defined($number)){           print "number flag set to $number ";}

./getlong.pl -name AAA
name flag set to AAA

 

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

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

 

參數別名
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)

對於不傳遞參數的選項,也就是一些開關類型,可以在第一部分後接“!”,這表示該選項不接收自變數,但是可以 通過在前面加上no變成負的(例如,“more”選項的-nomore)。如果不是用“!”,而是“+”,這表示它會在每次出現的時候增加一個變數。如果 選項出現在命令列裡,那麼相關的變數被設定為1;如果負的選項出現了,那麼相關的變數就被設定為0。

 

hash參數值(有名稱及參數值)
GetOptions ("define=s" => \%defines);
or
GetOptions ("define=s%" => \$defines);
example:
test.pl –define os=linux –define vendor=redhat

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.