zoukankan      html  css  js  c++  java
  • perl的Getopt::Long和pod::usage


    代码:

    需要显式地定义变量且初始化。例如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'} = 0 },
                        "help|?"    => \$g_opts->{'help'}
                      );
        if(!($g_opts->{'optionA'})){
            &pod2usage( -verbose => 1);#exit status will be 1
        }
        if($g_opts->{'help'}){
            &pod2usage( -verbose => 1);#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(0);$
    $

    $
    __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 8$
    $
    =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$


    完! 

  • 相关阅读:
    dubbo学习小计
    学习java虚拟机
    学习java虚拟机
    学习java虚拟机
    学习java虚拟机
    学习设计模式
    学习设计模式
    学习设计模式
    mybatis从入门到精通(五) sqlSession API的使用
    mybatis从入门到精通(四) 动态SQL
  • 原文地址:https://www.cnblogs.com/itech/p/2627267.html
Copyright © 2011-2022 走看看