如何使用Perl检查参数是否正确?

时间:2014-12-21 16:48:10

标签: perl

我是Perl的新手,我尝试检查我的2个参数是否以“ - ”或“ - ”开头。我的代码:

if ($ARGV[0] ~= /^-*/ || $ARGV[1] ~= /^-*/) {

但是当论据是“abc abc”时,它仍然会通过这个条件。

提前致谢。

1 个答案:

答案 0 :(得分:2)

首先,binding operator=~,而不是~=。这很容易记住,因为它有一个对应物 - !~(意思是'不匹配')。但那是一个简单的错字。

然而,更重要的是方法本身:如果要匹配'-''--',则模式应写为/^--?/。但是,您是否认为'---abc'是一个有效的论证并不清楚。如果没有,正则表达式应如下所示:

/^--?[^-]+$/

...否则仅仅检查相应参数的第一个字符对“ - ”就足够了,使用正则表达式显然是一种矫枉过正。例如:

if (substr($ARGV[0], 0, 1) eq '-' || substr($ARGV[1], 0, 1) eq '-') {
  # invalid params detected
}

尽管如此,您尝试实施它的方式仍应写为/^-+/,而不是/^-*/。最后一个匹配字符串开头的任何连字符数 - 包括0个连字符。这就是abc字符串通过检查的原因。事实上,任何字符串都会通过检查。