1

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

例子 :

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

在这种情况下,我想如果信用达到零机器人应该停止检查。但是如果已经到达 0 bot 下一个停止,如果 credit 到达 -1 bot 将再次工作

我的信用倒计时这样

    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 机器人将停止检查器,直到我将信用添加到我的机器人。

感谢您的帮助:)

4

2 回答 2

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;
}
于 2013-10-10T18:38:08.693 回答
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

怎么修?

于 2013-10-11T13:44:47.960 回答