2011年11月5日星期六

[PerlChina] 代码解读(GetOptions)

下面代码是在别人脚本(test.pl)中看到的,有几个问题,希望达人给解答一下。多谢!

==========test.pl========
use strict;
use Getopt::Long;

my ($Fileformat,$Cutoff,$Verbose,$Help);
GetOptions(
    "fileformat:s"=>\$Fileformat,
    "cutoff:s"=>\$Cutoff,
    "verbose"=>\$Verbose,
    "help"=>\$Help
);
die `pod2text $0` if (@ARGV == 0 || $Help);

=========================

主要是GetOptions()里面的部分看不懂,以 "fileformat:s"=>\$Fileformat为例来解读这段代码。

1、我查看了perldoc Getopt::Long大体知道 fileformat是在命令行中使用的参数,应当 是一个string,然后传递到程序内部时由$Fileformat接收这个值。是这样么?有没有误读?

2、但是为什么是\$Fileformat,一个reference呢?写成"fileformat:s"=>$Fileformat可不可以,为什么?二 者什么区别?

3、另外,为什么参数开关使用了fileformat,在内部就不能使用$fileformat,而是换成$Fileformat呢? 在test.pl内部并没有占用$fileformat这个变量啊?

4、在命令行中运行此程序时,带开关的参数传到程序内部由GetOptions来处理,没有被参数开关指定的参数都保存进@ARGV


没有评论: