Schrift
[thread]9182[/thread]

File handliing problem: *gähn*



<< >> 6 Einträge, 1 Seite
FlorianL
 2007-07-12 17:09
#78415 #78415
User since
2007-05-18
142 Artikel
BenutzerIn
[default_avatar]
ich hab für meinen bot ein statfile angelegt.

wenn datei nicht vorhanden -> erstellen und 1 reinschreiben,
wenn datei vorhanden -> auslesen und wert $var zuweisen

nun wird aber immer wieder die datei neu erstellt, und ich weiss nicht wieso? liegts am operator?

Code (perl): (dl )
1
2
3
4
5
6
7
my $statsfile = ("$config{username}.dat");
if (-e $statsfile) {
        system("touch $statsfile && echo 1 > $statsfile");
}
open(STATS, '+>', "$statsfile") or die "Error: Couldnt open $statsfile";
my @globatts = <STATS>;
my $globalatts = $globatts[0];


<schnipp>

Code (perl): (dl )
1
2
3
4
5
6
7
sub attack {
        print color("green"), "Attack started...\n", color("reset"), "This Session: ", color("white"), "$sessionatts\n", color("reset"), color
("white"), "Global: $globalatts\n", color("reset");
        $sessionatts++;
        $globalatts++;
        print STATS $globalatts;
        [...]


ich weiss das ich normal kein array bräuchte, aber wenn ich STATS ner $var zuweise klappts nich...?!
nepos
 2007-07-12 17:34
#78416 #78416
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Du machst genau dann touch+echo, wenn die Datei existiert. Da fehlt wohl ! vor dem -e.
Relais
 2007-07-12 17:36
#78417 #78417
User since
2003-08-06
2246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=FlorianL,12.07.2007, 15:09]wenn datei nicht vorhanden -> erstellen und 1 reinschreiben,
[...]
Code (perl): (dl )
if (-e $statsfile) {
[/quote]
Also Deine formulierte Logik widerspricht Deiner Ausführung, es müßte
Code (perl): (dl )
unless (-e $statsfile) {
heißen.
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop (Termin wird noch gesucht) 2025 in München.

Winter is Coming
FlorianL
 2007-07-12 17:52
#78418 #78418
User since
2007-05-18
142 Artikel
BenutzerIn
[default_avatar]
danke euch beiden, aber das file wird immernoch neu erstellt, hab auch beide variationen ausprobiert...

ich bin fast sicher es liegt am +> operator, aber der steht doch nur für read/write oder nich?


edit: es muss einfach daran liegen, denn bei der abfrage der $globalatts variable ist sie wieder leer, da ich die datei vorher gelöscht habe und sie nur zusammen mit dem echo erstellt wird, müsste eigendlich zumindest ne 1 drin stehn, direkt hinter dem touch & echo befehl kommt das open() mit dem operator, kann doch also nur das sein oder?\n\n

<!--EDIT|FlorianL|1184249073-->
pq
 2007-07-12 18:19
#78419 #78419
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
perldoc -f open:
Code: (dl )
1
2
3
You can put a '+' in front of the '>' or '<' to indicate that you want both
read and write access to the file; thus '+<' is almost always preferred for
read/write updates--the '+>' mode would clobber the file first.

nimm +<\n\n

<!--EDIT|pq|1184250002-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
FlorianL
 2007-07-12 18:26
#78420 #78420
User since
2007-05-18
142 Artikel
BenutzerIn
[default_avatar]
ach mist, das hatte ich sogar!

aber zu dem zeitpunkt war mein -e switch noch verkeht herum, bzw if -e statt unless...

naja danke auch dir und schönen feierabend noch!
<< >> 6 Einträge, 1 Seite



View all threads created 2007-07-12 17:09.