ircボットで次のことをしようとしているPERLスクリプトの助けが必要です:
- ユーザーコマンドで、ファイルが存在するかどうかを確認します。
- 存在しない場合は、新しいファイルを作成し、値「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";
}
編集:
修正されました、後藤は残らなければなりませんでした、ありがとうございます:)
[編集]
D: 私がテストしたものと呼ばれるファイルがあったに違いありません。ファイルが存在しない場合は、ファイルが作成されなくなります。perl を使ったのは 3 日間だけです。
も試しました:
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;
}
}
}