0

我正在尝试在 Perl 中编写此脚本,以从我的查询结果中检查变量 $summary 中的唯一字符串。有多个类似的条目,但其中一部分是唯一的(db1node1web1 可能是不同的节点,但结果类型相同)。这只是检查我是否正确使用 Reg Ex 的代码的一小部分(目前不正确)。

我包括以下代码:

$summary = "NFW - CRITICAL CPU_Load_db1node1web1 CRITICAL - load average: 114.49, 48.55, 29.17 Sept 01 00:10:16 PDT 2012";
if ( $summary =~ "NFW - CRITICAL CPU_Load_[a-z]* CRITICAL - load average: 114.49, 48.55, 29.17 Sept 01 00:10:16 PDT 2012") {
    print "True\n";
}else {
    print "False\n";
}

我对 Perl 很不满意,并试图让它工作,这样我就可以剖析我的查询结果。

4

4 回答 4

3

如果您只需要匹配一个子字符串,则只指定那个,例如

$summary =~ /NFW - CRITICAL CPU_Load_/
于 2012-09-12T18:11:22.893 回答
2

自从我用 perl 编码以来已经有几年了,但是 IIRC,你不必指定它是匹配还是替换?你需要包括数字

我相信你的代码应该是:

$summary = "NFW - CRITICAL CPU_Load_db1node1web1 CRITICAL - load average: 114.49, 48.55, 29.17 Sept 01 00:10:16 PDT 2012";
if ( $summary =~ m/NFW - CRITICAL CPU_Load_[a-z0-9]* CRITICAL - load average: 114.49, 48.55, 29.17 Sept 01 00:10:16 PDT 2012/) {
    print "True\n";
}else {
    print "False\n";
}

参考:http ://www.troubleshooters.com/codecorn/littperl/perlreg.htm

于 2012-09-12T18:12:27.417 回答
0

[a-z]不包括数字。您的示例字符串包含几个1's。将班级调整为

[a-z0-9]
于 2012-09-12T18:10:04.457 回答
0

您需要使用斜杠来引用正则表达式而不是双引号。此外,您的输入db1node1web1包含数字和字符:

if ( $summary =~ /NFW - CRITICAL CPU_Load_[a-z0-9]* CRITICAL - load average: 114.49, 48.55, 29.17 Sept 01 00:10:16 PDT 2012/) {

  print "True\n";

}else {

  print "False\n";

}
于 2012-09-12T18:10:56.043 回答