Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]10639[/thread]

Datei ändern!

Leser: 1


<< >> 6 Einträge, 1 Seite
Gast Gast
 2007-10-24 10:27
#101249 #101249
Hallo,
ich wollte mit dem folgenden Code alle Dateien, die in einem Ordner liegen nacheinander öffnen, ein Leerzeichen in der ersten Zeile einfügen bzw. ersetzen und wieder (die gleiche Datei) schließen!
Kann mir jemand sagen, ob ich hier ein Fehler irgendwo habe, oder es überhaupt so funktioniert?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
opendir(DIR,"test");
while($datei = readdir(DIR))
{
open(INPUT,"<test/$datei");
print "$datei\n";
undef $/;

$_ = <INPUT>;

$_ =~ tr/<html><head>/ <html><head>/;

close (INPUT);

close(FILE);
}
closedir(DIR);
GwenDragon
 2007-10-24 11:27
#101255 #101255
User since
2005-01-17
14607 Artikel
Admin1
[Homepage]
user image
Bitte nicht immer wieder dein Posting neu laden! Das erzeugt Doppelposts.
GwenDragon
 2007-10-24 11:42
#101257 #101257
User since
2005-01-17
14607 Artikel
Admin1
[Homepage]
user image
Ich glaube, du meinst das so:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
if (opendir(DIR,"test") ) {
  while($datei = readdir(DIR)) { 
    if ( open(INPUT,"+<", "test/$datei") ) { # Datei um Lesen und Schreiben öffnen
      print "$datei\n";
      undef $/;
    
      $_ = <INPUT>; # erste Zeile lesen
    
      $_ =~ s/<html><head>/ <html><head>/; # Ersetzen
    
      seek(INPUT, 0, 0) or die "Fehler: $!"; # An Anfang der Datei gehen
    
      print INPUT $_ or die "Fehler: $!"; # Inhalt zurück schreiben

      close (INPUT)  or die "Fehler: $!"; # Datei schließen
    }
    else {
      die "Fehler: $!"; # Problem beim Öffnen der Datei
    }
  }
  closedir(DIR) or die $!; # Problem beim Schließen des Verzeichnisses
}


Außerdem solltest du auf fehlgeschlagene Dateioperationen prüfen (siehe mein die $!).
Und brav use strict;
und use warnings; verwenden. ;)
pq
 2007-10-24 11:58
#101260 #101260
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
GwenDragon+2007-10-24 09:27:22--
Bitte nicht immer wieder dein Posting neu laden! Das erzeugt Doppelposts.

das problem ist, dass er deinen hinweis nicht lesen kann, wenn er sein posting immer neu lädt.
ist jedoch trotzdem legitim. ich würde das vielleicht auch so machen.
es fehlt einfach der redirect, jedoch blicke ich selbst nicht durch den code durch. es muss
irgendwo in PBoard::Actions::PrintStartNewThread bzw. SaveNewThread geändert werden.
vermutlich PrintStartNewThread in StartNewThread umwandeln und in SaveNewThread dann
einen redirect einbauen.
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
GwenDragon
 2007-10-24 12:01
#101261 #101261
User since
2005-01-17
14607 Artikel
Admin1
[Homepage]
user image
pq+2007-10-24 09:58:41--

das problem ist, dass er deinen hinweis nicht lesen kann, wenn er sein posting immer neu lädt.

Ach so, weil er Gast ist und ich ja eingeloggt. Und wenn die Threads nicht durch Mod freigegeben wurden, dann denke alle, dass der Thread fehlt.
Ein deutlicher Hinweis dazu beim Erstellen des Threads sollte eigentlich vorhanden sein. Muss mal noch gefixt werden.
pq
 2007-10-24 14:19
#101265 #101265
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
GwenDragon+2007-10-24 10:01:47--
Ach so, weil er Gast ist und ich ja eingeloggt. Und wenn die Threads nicht durch Mod freigegeben wurden, dann denke alle, dass der Thread fehlt.
Ein deutlicher Hinweis dazu beim Erstellen des Threads sollte eigentlich vorhanden sein. Muss mal noch gefixt werden.

nein, das problem tritt auch bei usern auf.
man schreibt einen thread, und nach dem abschicken wird der thread dargestellt. ohne
redirect. der user will nach ner halben stunde nachgucken, ob antworten da sind, und
drückt auf reload. dadurch wird aber erneut gepostet. der user sieht nun einen neuen
thread, denkt aber, es wäre derselbe. das macht er nun 5-10 mal und ist enttäuscht,
dass er keine antworten bekommt.

ich habe das szenario schon mehrere male hier im forum beschrieben, und die ganze sache ist
ziemlich nervig. wenn der code etwas klarer wäre, könnte man das schnell fixen, aber ich bin
zudem mit meinem eigenen forum beschäftigt.
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
<< >> 6 Einträge, 1 Seite



View all threads created 2007-10-24 10:27.