# Deletes players which haven't logged for a week and have level below 30 use strict; use warnings; use Tie::File; my $days = 7; my $minlevel = 30; my $counter = 0; for $file (glob "../data/players/*"){ next unless $file =~ /xml$/; open(my $fh, "<", $file) or die $!; @content = ; $_ = "@content"; close(FILE); my ($account) = $_ =~ /account="(\d+)"/; my ($lastlogin) = $_ =~ /lastlogin="(\d+)"/; my ($level) = $_ =~ /level="(\d+)"/; my ($playername) = $_ =~ /name="(\w+)"/; if ((time() - $lastlogin) > $days*24*3600 && $lastlogin > 0 && $level < $minlevel){ for my $local_file($file,"../data/accounts/$account.xml","../data/vip/$account.xml"){ tie my @array,'Tie::File',$local_file) or die $!; @array = grep{$_ !~ /$playername/}@array; untie @array; } print "$file\n"; $counter++; } } print "$counter acccounts deleted\n";