Perl的新手 - 遇到浮点比较问题

时间:2017-02-09 02:00:17

标签: perl

我是Perl的新手,编写了一个简单的脚本,用于检查安装的VMware Fusion版本是否大于8.4。我收到了这个错误:

syntax error at ./test.pl line 8, near ");"

这是剧本:

 @vmVersion = `defaults read /Applications/VMware\ Fusion.app/Contents/Info CFBundleShortVersionString`;

 @vmMinimum = 8.4;

if($vmVersion > $vmMinimum);

then print "compliant";

 else print "update required";

 fi

2 个答案:

答案 0 :(得分:1)

你拥有的代码不是Perl。这可能看起来更像Perl:

my $vmVersion = `defaults read '/Applications/VMware Fusion.app/Contents/Info' CFBundleShortVersionString`;
if ($vmVersion > 8.4) {
    print "compliant";
} else {
    print "update required";
}

注意两件事:

  1. 版本号不是浮点数。您应该使用语义版本库(例如SemVer)进行版本比较。
  2. 您的邮件可能应包含换行符(\n)。没有这些,当用户运行您的程序时,他们的提示将在之后打印在一个有趣的位置。 : - )

答案 1 :(得分:0)

我从未见过

if($vmVersion > $vmMinimum);
...
fi

在之前的perl中,用块括号替换。

if($vmVersion > $vmMinimum) {
...
}