Perl 一次只有一个选项

Perl 一次只有一个选项

有一个要求,我不能同时放置两个选项。

例如使用-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]

相关内容