无法阻止perl

时间:2013-10-10 18:22:46

标签: perl

我有一个机器人。我的机器人负载在IRC上。 我把全球信用放在我的机器人中,比如100 Credit。每个人都使用我的机器人,信用将减少

示例:

Falcon check credit 99
Handy check credit 98
A check credit 97

在这种情况下,我想如果信用到达零,机器人应该停止检查。但是如果到了0僵尸站,那么如果信用到达-1,机器人将再次工作

我的积分倒数就像这样

    open(FILE, "+<freecredit.txt") or die "$! error";
    undef $/; 
    $number = <FILE>;
    $number = int($number);
    $credits = $number-1;
    seek(FILE, 0, 0); 
    truncate(FILE, tell FILE);
    print FILE $credits;
    close(FILE);

    if($credits == 0) {
    &respond_to_privmsg(\%msg,"Error : you must have credits to check");
    goto toEnd;
    }
    }

toEnd;

但是如果信用额度为零并且到达-1机器人继续检查。 我想如果信用有0机器人会停止检查,直到我为我的机器人添加信用。

感谢帮助:)

2 个答案:

答案 0 :(得分:7)

您的代码布局非常糟糕,并且似乎是循环的结束,因此很难说它应该如何。您似乎也在开头没有use strictuse warnings编写它:或者您已经在文件顶部声明了所有内容,这也是一个坏主意。

这可能会对你有帮助。

  open my $fh, '+<', 'freecredit.txt' or die "$! error";
  my $credits = <$fh>;

  if ($credits == 0) {
    respond_to_privmsg(\%msg, "Error : you must have credits to check");
    last;
  }

  $credits -= 1;

  truncate $fh, 0;
  seek $fh, 0, 0;
  print $fh $credits;
  close $fh;
}

答案 1 :(得分:0)

我已经使用了你的脚本但是看起来像那样:

    open my $fh, '+<', 'freecredit.txt' or die "$! error";
  my $credits = <$fh>;

  if ($credits == 0) {
print $credits;
    last;
  }

  $credits -= 1;

  truncate $fh, 0;
  seek $fh, 0, 0;
  print $fh $credits;
  close $fh;
CMD中的

错误如下:

E:\>perl a.pl
Can't "last" outside a loop block at a.pl line 6, <$fh> line 1.
0

如何解决?