Thread Clean Script (8 answers)
Opened by Gast at 2006-05-22 20:19

Gast Gast
 2006-05-22 20:19
#7742 #7742
Guten Tag.

Ich habe so gut wie keine Ahnung von Perl und möchte mich schon etwas belesen nun aber ich bräuchte doch schon eine schnelle Lösung.

Und zwar hab ich folgendes Script!:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Deletes players which haven't logged for a week and have level below 30
use warnings;
$days = 7;
$minlevel = 30;
$counter = 0;
for $file (glob "../data/players/*")
{
next unless $file =~ /xml$/;
open(FILE, $file);
@content = <FILE>;
$_ = "@content";
close(FILE);
/account="(\d+)"/;
$account = $1;
/lastlogin="(\d+)"/;
$lastlogin = $1;
/level="(\d+)"/;
$level = $1;
if ((time() - $lastlogin) > $days*24*3600 && $lastlogin > 0 && $level < $minlevel)
{
unlink("$file");
unlink("../data/accounts/$account.xml");
unlink("../data/vip/$account.xml");
print "$file\n";
$counter++;
}
}
print "$counter acccounts deleted\n";


nun möchte ich aber wenn er was gefunden hat zum beipsiel das der player (name -> Kroxie) lange nicht mehr eingeloggt hat nicht den account.xml datei löscht sondern diese öffnet!

So nun hat er sie offen sieht dann so aus:
<?xml version="1.0"?>
<account pass="dsh902" type="1" premDays="15">
<characters>
<character name="Kakak" />
<character name="Kakakn" />
<character name="Kroxie" />
</characters>
</account>

Nun soll er den Player Eintrag löschen der so aussieht:
<character name="Kroxie" />

Zum Schluss soll das ganze dann so aussehen:
<?xml version="1.0"?>
<account pass="dsh902" type="1" premDays="15">
<characters>
<character name="Kakak" />
<character name="Kakakn" />
</characters>
</account>[B]

View full thread Clean Script