来源:

http://www.cnblogs.com/itech/archive/2012/08/07/2627267.html

代码:

需要显式地定义变量且初始化。例如optionX。

如果没有定义变量且显式初始化,且没有在命令行指定选项,则选项对应的变量将为未定义。

 #!/bin/perl-5.8.3/bin/perl$
use warnings;
use strict; use Data::Dumper;
use Getopt::Long;
use Pod::Usage; our $g_opts;
our $optionX=''; #if not defined in command line, it will be empty string
sub parse_opts{
my $result = GetOptions(
"optionA=s" => \$g_opts->{'optionA'},#string
"optionB=s" => \$g_opts->{'optionB'},#string
"optionC=i" => \$g_opts->{'optionC'},#integer
"optionD=f" => \$g_opts->{'optionD'},#float
"optionX=f" => \$optionX,
"optionY=f" => \$optionY,
"verbose" => \$g_opts->{'verbose'},#flag
"quiet" => sub { $g_opts->{'verbose'} = },
"help|?" => \$g_opts->{'help'}
);
if(!($g_opts->{'optionA'})){
&pod2usage( -verbose => );#exit status will be 1
}
if($g_opts->{'help'}){
&pod2usage( -verbose => );#exit status will be 1
}
} &parse_opts();
print("\n$optionX\n");
print($optionY); #if not defined in command line, it will be undefined
print($g_opts->{"optionB"}); foreach my $key (keys %{$g_opts}){
if(!$g_opts->{$key}) {next;}
print($key . "=" . $g_opts->{$key} . "\n");
}
exit(); __END__ =head1 NAME
sample - Using Getopt::Long and Pod::Usage
=head1 SYNOPSIS
sample [options] [args ...]
Options: -optionA optionA
-optionB optionB
-optionC optionC
-optionD optionD
-verbose verbose
-quiet noverbose
-help brief help message
=head1 OPTIONS
=over =item B<-help> Print a brief help message and exits. =back
=head1 DESCRIPTION
B<This program> will read the given input file(s) and do something
useful with the contents thereof. =cut

最新文章

  1. ios显示或隐藏导航栏的底线
  2. 解决hibernate删除时的异常
  3. django--模板(七)
  4. KendoUI系列:AutoComplete
  5. Hibernate面试题
  6. shell判断文件是否存在
  7. android 中 webview 怎么用 localStorage?
  8. 【UML】如何看Android的UML图
  9. 归约函数reduce&amp;映射数组map(笔记)
  10. hdu2852KiKi&#39;s K-Number(区间K值)
  11. 【BZOJ1042】【DP + 容斥】[HAOI2008]硬币购物
  12. Gradle 1.12 翻译——第十六章. 使用文件
  13. Java Level 2 学习的八大名著
  14. java关键字transient与volatile小结
  15. Log4Net(一):快速入门
  16. 653. Two Sum IV - Input is a BST
  17. KMP算法小结
  18. 第81节:Java中的数组
  19. 【linux】/dev/null作用和/dev/random
  20. thinkphp调用微信jssdk开发

热门文章

  1. .net 中HttpClient 携带cookie传输
  2. Spring Security(03)——核心类简介
  3. jquery之全选全不选
  4. web.py 学习(二)Worker
  5. marble 基本函数(一)
  6. wpf 异步加载 只需6段代码
  7. ThinkPHP框架基础
  8. grub引导centos
  9. 模拟SPI协议时序
  10. ssh environment variable