有一个要求,我不能同时放置两个选项。
例如使用-a
选项:
file.pl -a file.text # executes file
但如果我写
file.pl -a -a file.text # it is supposed to print a msg
或者
file.pl -a -b file.text # it is supposed to print a msg
下面是我的脚本:
if ($ARGV[1] eq "-a" or "-b" or "-c" ) {
print "error \n"; }
问题是即使我只是写file.pl -a file.text
,它仍然打印消息。
答案1
这不是逻辑运算符的工作原理。你必须重复整个表达式:
if ($ARGV[1] eq '-a' or $ARGV[1] eq '-b' or $ARGV[1] eq '-c') {
print "Error\n";
}
如果您不想重复 ARGV 部分,您可以使用grep
:
if (grep $_ eq $ARGV[1], qw(-a -b -c)) {
但是,事实上,您对第二个参数的第一个字符相当感兴趣,所以这也应该有效:
if (0 == index $ARGV[1], '-') {
关于什么$ARGV[2]
?