我有一个机器人。我的机器人负载在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机器人会停止检查,直到我为我的机器人添加信用。
感谢帮助:)
答案 0 :(得分:7)
您的代码布局非常糟糕,并且似乎是循环的结束,因此很难说它应该如何。您似乎也在开头没有use strict
和use 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
如何解决?