【发布时间】:2017-02-17 17:54:57
【问题描述】:
我几乎完成了一个 nagios 插件,我正在使用这个 guide. 虽然我遇到了错误,但我不知道为什么。
#!/bin/perl
use strict;
use warnings;
my $warn = 20;
my $crit = 50;
my $percent_down = 10;
my $percent_up = 90;
my $err = "error";
given ($percent_down) {
when ($percent_down lt $warn) { print "OK - $percent_up% UP"; exit 0;}
when ($percent_down ge $warn && lt $crit ) { print "WARNING - $percent_down% DOWN"; exit (1);}
when ($percent_down ge $crit) { print "CRITICAL - $percent_down% DOWN"; exit (2);}
default { print "UNKNOWN - $err "; exit (3);}
}
我在") {" 处出现语法错误,从given ($percent_down) { 开始,然后在之后的每一行都出现在";}"。
【问题讨论】:
-
一目了然——
$percent_down ge $warn && lt $crit——你不能做$var ge $c1 && lt $c2。那些&& lt没有任何意义。完成条件,$var ge $c1 && $var lt $c2。并注意优先级。如果这些确实是数字,请使用>=、<等。 -
对数字使用
<和>=,而不是lt和ge。 (例如,9 ge 10为真。) -
您是否启用了
given功能?你需要吗?use feature "switch"; ... -
据说是实验性的,但是为什么呢?在这里阅读:perldoc.perl.org/…
-
我建议您忽略该指南。这是对
givenwhen的滥用