语法错误,dostuff后的第一行

时间:2014-11-24 06:14:45

标签: perl loops timer

这是代码。我说实话,我对Perl并不熟悉,而且我已经从这个网站复制过来,或多或少地构建你在下面看到的东西。这里的另一篇文章Run a sub in a perl script based on the time?显示了while函数(?)的基础知识,但它在我的第一个变量之后出错。尝试双引号,单打引号,不知道还有什么可尝试。有关为什么这么快失败的任何想法?  其余的代码没有它,但我需要每30分钟运行一次这个脚本。我们可以使用Windows来运行它(我有一个已经运行的PowerShell脚本),但我们有可能在Unix / Linux上运行它,我们可能只是使用Perl来进行跨平台使用。

此外,我目前正在Windows中进行测试,以方便使用。我更多的是Windows用户,但我确实有一些可以在Linux上运行的代码,这对我来说更容易进行测试。

提前致谢!

错误

语法错误在D:\ mount \ script.pl第13行,靠近" 15;"

语法错误在D:\ mount \ script.pl第36行,靠近")"

while (1)
    {
    dostuff
        (
            my $timeout = 15;
            my $cellname = "PRD-BPPM";

        #Variable for time in epoch because Windows is stupid and can't post it like EVERY OTHER OS out there
            my $endtimew = "1416788994";
            my $starttimew = $endtimew - 1800;
            print "$endtimew\n";
            print "$starttimew\n\n";

        #Windows
            my $mquery_win = "D:\\BMC_Software\\BPPMAgent\\Agent\\server\\bin\\mquery.exe -n \@192.168.0.104/1828#mc -a EVENT -v -l D:\\BMC_Software\\BPPMAgent\\Agent\\server -s \"mc_host,date_reception\" -w \"date_reception: between [$starttimew,$endtimew]\" -f CSV >> E:\\powershell.csv";

        #Windows
            system($mquery_win);

            print $mquery_win;

            open(TIDAL,'E:\\powershell.csv');
            my @array = <TIDAL>;
            close TIDAL;
            open(OUT,'>','E:\\powershell.csv');
            print OUT @array[2..$#array];
            close OUT;
        );
                sleep($timeout);
    };

1 个答案:

答案 0 :(得分:2)

我认为您对Perl语法的工作方式有一些基本的困惑。请允许我备份一步。

这是一个每三十秒打印一条消息的while循环:

while(1){
    print "hi, mom!\n";
    sleep 30;
}

这是一个每30秒调用dostuff()的while循环

while(1){
    dostuff();
    sleep 30;
}

知道了吗?现在我们需要定义dostuff(),所以我们添加:

sub dostuff {
    print "hi, mom!\n";
}

将它们放在一起,它看起来像这样:

# here's your loop that *calls* dostuff()
while(1){
    dostuff();
    sleep 30;
}
# here's where you *define* a subroutine called "dostuff"
sub dostuff {
    print "hi, mom!\n";
    # and obviously all that other code would go in here
}

这有用吗?