2013-10-10 2 views
1

У меня есть бот. Моя ботовую нагрузку на IRC. Я ставлю глобальный кредит моему боту, например, 100 кредитов. Каждый народ использовать бот, кредит будет уменьшитьНе удается остановить perl

Примера:

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 бот, перестанет проверять, пока я не добавлю кредит своему боту.

Спасибо за помощь :)

+1

'if (! $ Number) {.. не декремент ..}' –

+1

BTW Я думаю, что метка 'toEnd;' неверна, она должна быть 'toEnd:'. – psxls

ответ

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; 
} 
0

меня использовать свой сценарий, но see'ms так:

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 

Как это исправить?

Смежные вопросы