我正在尝试运行其手册页中描述的fping脚本。
#!/usr/local/bin/perl
require 'open2.pl';
$MAILTO = "root";
$pid = &open2("OUTPUT","INPUT","/usr/local/bin/fping -u");
@check=("slapshot","foo","foobar");
foreach(@check) { print INPUT "$_\n"; }
close(INPUT);
@output=;
if ($#output != -1) {
chop($date=`date`);
open(MAIL,"|mail -s 'unreachable systems' $MAILTO");
print MAIL "\nThe following systems are unreachable as of: $date\n\n";
print MAIL @output;
close MAIL;
}
但是,我在运行它的任何地方都收到以下错误:
syntax error at /path/to/pingtest.pl line 13, near "=;" Execution of /path/to/pingtest.pl aborted due to compilation errors.
有人可以帮我解决第13行出了什么问题吗?我有open2.pl和fping路径是正确的。
答案 0 :(得分:4)
如果您在联机man-page上找到了该脚本,则<OUTPUT>
已被解释为HTML标记并已删除。它应该读
@output = <OUTPUT>;
但是这个Perl脚本看起来像几十年前写的那样
require open2.pl
的使用是long-ago replaced by use IPC::Open2
它不使用use strict
或use warnings
,并且避免使用词汇变量
函数调用使用神秘的&open2
语法,仅在非常特殊的情况下才有用
对open
的调用使用了老式且含糊不清的双参数版本