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其实就是说明那是个字符串,更详细的说明看下表

posted @ 2012-08-01 22:02  Edwinaclau  阅读(721)  评论(0编辑  收藏  举报