撒的阿坎努斯 发表于 2015-12-27 15:06:18

perl命令行参数解析

perl命令行参数解析

  mysql -h ip -u root此类就属于命令行解析范畴了,不过mysql客户端貌似是C写的,当然perl也可以搞得像这样
  看起来灰常的酷,在CPAN上我们可以看到Getopt::Cmd和Getopt::Long这两个模块,从名字上我们就可以大致的猜出来,
  前者是支持-v这样的短命令的形式,另外一个是支持长命令如--host 这样的形式。
  OK,下面说下使用,如果没安装这两个Module,请自行安装。(直接CPAN安装或者perl MAKE.PL)
  先说Getopt::Cmd的使用
  use Getopt::Std;
  # -v ARG, -D ARG, -o ARG, sets $opt_v, $opt_D, $opt_o
  getopt("vDo");
  # -v ARG, -D ARG, -o ARG, sets $args{v}, $args{D}, $args{o}
  getopt("vDo", \%args);getopts("vDo:"); # -v, -D, -o ARG, sets $opt_v, $opt_D, $opt_o
  getopts("vDo:", \%args); # -v, -D, -o ARG, sets $args{v}, $args{D}, $args{o}
  很简单,相信看后面的注释都能看出来。
  再说Getopt::Long
  use Getopt::Long;
  GetOptions( "extract" => \$extract, "file=s" => \$file );
  if ($extract) {
  print "I'm extracting.\n";
  }
  die "I wish I had a file" unless defined $file;
  print "Working on the file $file\n";
  将--extract和--file的值分别保存在$extract和$file中。然后我们就可以进行其他操作了,至于你要问file=s中,哪个s是干啥的,
  s其实就是说明那是个字符串,更详细的说明看下表
页: [1]
查看完整版本: perl命令行参数解析