• Perl getopts


    getopts的使用问题

    #!/usr/bin/perl

    #execute ABC.pl -s 999 -g -t

    use Getopt::Std;

    getopts('s:t:g:',\%opts);

    foreach my $key ( keys %opts){

      print $key,"-->;",$opts{$key},"\n";

    }

    -------------------------------------

    注意看getopts('st:g:');
    t:
    g:
    這兩參數後面有 ":"
    表示這兩個參數,
    如果有就一定要帶參數...例如-t 100 -g 200
    而s後面沒有":"
    表示s後面不能帶任何參數...只能用
    -s或 沒有,如果你帶了參數-s 1..後面的參數便會受到影響..

    -------------------------------------

    #!/usr/bin/perl

    # script is "./g"

    use Getopt::Std;

    %options=();####################是perl的hash数据结构

    getopts("od:fF",\%options);

    [ 解释一下"od:fF",d后有冒号,表示-d后面要跟参数。ofF后面没有冒号,表示-o -f -F后面不带参数。

    而且-d后所跟的参数分别赋给变量$options{d}。对于变量$options{o},$options{f},$options{F},若命令行加了-o,则$options{o}=1,否则为0。-f,-F类似]

    # like the shell getopt, "d:" means d takes an argument

    print "-o $options{o}\n" if defined $options{o};

    print "-d $options{d}\n" if defined $options{d};

    print "-f $options{f}\n" if defined $options{f};

    print "-F $options{F}\n" if defined $options{F};

    print "Unprocessed by Getopt::Std:\n" if $ARGV[0];

    foreach (@ARGV) {

      print "$_\n";

    }

    -------------------------------------

    shift ARRAY

    shift

    这个函数把数组的第一个值移出并且返回它,然后把数组长度减一并且把所有的东西都顺移。如果在数组中不再存在元素,它返回 undef。

    如果省略了 ARRAY,那么该函数在子过程和格式的词法范围里移动 @_;它在文件范围(通常是主程序)里移动 @ARGV。 子过程通常以拷贝它们的参数到词法变量里开始,而 shift 可以用于这个目的

    总之就是shift没有数组作为参数时,就是移动@_这个默认的参数。

    -------------------------------------

    http://search.cpan.org/~nwclark/perl-5.8.5/lib/Getopt/Std.pm

  • 相关阅读:
    MongoDB初期学习
    springboot+camunda实现工作流1
    一文带你深入理解位运算
    【林超所长】学科01:熵与热力学重要模型
    PM常用的讨论社区及牛人帖子
    C# 2.0 的特性 总结
    小脚本解决生活问题
    Domain Adaption 之 TCA等算法
    强化学习ddpg算法
    bindkey用法
  • 原文地址:https://www.cnblogs.com/emanlee/p/2255786.html
Copyright © 2020-2023  润新知