我需要 PERL 脚本的帮助,我正在尝试在 irc 机器人上执行以下操作:
- 在用户命令上查看文件是否存在。
- 如果不存在,则创建新文件,然后打印值“1”。
- 如果存在则进入下一阶段。
- 获取文件里面的文件信息,是一个数字。
- information + 1 然后打印到一个新文件中,同名。
这是脚本:
my ($who,$channel,$message) = @_;
my @things = split(' ', $message);
my @args = @things[1..$#things];
if ($message =~ /^&cookie/i && @args[0..$#args]) {
if ( -s '@args[0..$#args].txt') { $varr = 1; goto varrr;
} else {
open (USER, ">", "@args[0..$#args].txt") or die "failed: $!";
my $sum = 1;
print USER "$sum";
close (USER);
}
varrr:
if ($varr == 1) {
open (USER, "<@args[0..$#args].txt");
while (my $use = <USER>) {
my $sum = 1;
my $newuse = ($use + $sum);
close (USER);
open (USER, ">@args[0..$#args].txt");
my $usee = $use + 1;
print USER "$newuse\n";
close (USER);
print $sock "PRIVMSG $channel :You have given @args[0..$#args] a cookie! \n";
$varr = 0;
}
}
}
elsif ($message =~ /^&cookie/i) {
print $sock "PRIVMSG $channel :Invalid parameter, use &cookie [name]. \n";
}
编辑:
已修复,goto 必须保留,谢谢大家 :)
[编辑]
D:我必须有一个名为我测试它的文件,如果该文件不存在,它现在将不再创建该文件,现在怎么办?我只有 3 天的 perl 经验。
也试过:
if ($message =~ /^&cookie/i && @args[0..$#args]) {
unless ( -s '@args[0..$#args].txt') { $varr = 1;
} else {
open (USER, ">", "@args[0..$#args].txt") or die "failed: $!";
my $sum = 1;
print USER "$sum";
close (USER);
}
varrr:
if ($varr == 1) {
open (USER, "<@args[0..$#args].txt");
while (my $use = <USER>) {
my $sum = 1;
my $newuse = ($use + $sum);
close (USER);
open (USER, ">@args[0..$#args].txt");
my $usee = $use + 1;
print USER "$newuse\n";
close (USER);
print $sock "PRIVMSG $channel :You have given @args[0..$#args] a cookie! \n";
$varr = 0;
}
}
}