当你需要知道用户向你的Perl程序传递了什么样的开关参数的时候你可以用不同的方法来实现。一个简单的检查是否存在Boolean参数的方法是循环检测@ARGV数组,为遇到的每一个参数设置一个标志:
foreach $arg (@ARGV) {
$a = 1, next if $arg eq '-a';
$b = 1, next if $arg eq '-b';
$c = 1, next if $arg eq '-c';
}
另一个简单的办法是使用Perl的-s参数。在这种情况下,Perl会生成与开关参数同名的变量并从@ARGV数组里删除它们。例如:
perl -s prog.pm -a -b -c
当程序prog.pm执行,那么变量$a,$b和$c就都被定义并设置为1。只有位于任何非开关变量或者“-- ”前的开关参数才会被处理。因此,下面的命令不会正常工作:
perl -s prog.pm -a -b 13 -c 6/6/2001