klamm-Forum

klamm-Forum (https://www.klamm.de/forum/)
-   Lose4Scripts (https://www.klamm.de/forum/lose4scripts-7/)
-   -   [S] PERL Replace-Script bis zu 20 Mio Lose! (https://www.klamm.de/forum/f7/perl-replace-script-bis-zu-20-mio-lose-328613.html)

seimi 08.06.2010 14:48:36

PERL Replace-Script bis zu 20 Mio Lose!
 
Hallo klammunity,

ich brauche ein PERL-Script, dass in einem Ordner und allen Unterordnern (bis in die letzte Ebene) in allen dort vorhandenen .txt-Dateien einen bestimmten String mit einem anderen ersetzt.
Dafür gibts dann 10 Mio Lose. Optimal wäre es, wenn das Script zusätzlich noch mitloggt, in welcher Datei (mit zum Script relativer oder absoluter Pfadangabe) er wie viele Ersetzungen vorgenommen hat (dabei kann davon ausgegangen werden, dass das Script in einem Ordner liegt, der dem Ordner, in dem ersetzt werden soll, übergeordnet ist).

Fürs Logging gibts 5 Mio Lose extra, weitere 5 Mio gibt es, wenn das Script bis heute, 08.06.2010, 18:00 Uhr fertig wird.

Also:
  • Script ohne Logging nach 18 Uhr: 10 Mio Lose
  • Script mit Logging nach 18 Uhr: 15 Mio Lose
  • Script ohne Logging bis 18:00 Uhr: 15 Mio Lose
  • Script mit Logging bis 18:00 Uhr: 20 Mio Lose.

Bei Fragen einfach hier im Thread melden.

Danke im vorraus.

seimi

Belegthondion 08.06.2010 15:05:19

Im Ernst... 20 Mio Lose sind im Moment etwa 2€ Wert. Bei einem reelen Stundensatz von 40€ müßte man das Script in 3 Minuten fertig haben.

Ich kanns dir bauen und auch der Zeitrahmen ist kein Problem. Sogar rein für den Spaß würde ichs bauen... aber 20 Mio finde ich dann doch etwas arg wenig dafür das ich dir dann ein fertiges Script liefere...

Viele Grüße
Simon

seimi 08.06.2010 15:11:31

Ich bin selbst Programmierer (nur halt nicht Perl ;) ) und ich halte den Aufwand für überschaubar, sodass ich 20 Mio für angemessen hielt.

Aber in Ordnung, du kannst mir sehr gern ein Gegenangebot machen. :)

Belegthondion 08.06.2010 15:25:04

Hi,

also in den 3 Minuten hab ich nicht mal die Files mit den benötigten fertigen Code-Schnipseln für das parsen im Filesystem gefunden und im Editor geöffnet :)

Aber ich bin grade dran, erstmal just vor fun. Wenn ich fertig bin schau ich mal, wie lange ich gebraucht habe und mache ein Angebot.

Viele Grüße
Simon

seimi 08.06.2010 16:19:48

In Ordnung. :)

Ich benutze übrigens Debian Etch, falls das ein Rolle spielt.

Gruß,
Marius

Belegthondion 08.06.2010 16:31:21

Ich schick dir gleich mal nen Link zu dem Perl, was ich auf die schnelle zusammengebastelt habe. Quick and dirty, auf Windows funktioniert es, unter Linux kann ich grade nicht testen

Teste mal und gibt Feedback... allerdings bin ich erst in ner Stunde wieder am PC.

Bye
Simon

seimi 08.06.2010 17:55:40

Sehr gut, danke schonmal soweit. :)

Zuerst klappt alles einwandfrei, aber dann tritt ein Problem auf.

Code:

Scanning DIR /is/htdocs/wp10461234_RCZM5ZHN6U/wcsrv/mangosdb/udb/unifieddb-cp
Scanning DIR /is/htdocs/wp10461234_RCZM5ZHN6U/wcsrv/mangosdb/udb/unifieddb-cp/trunk
Scanning DIR /is/htdocs/wp10461234_RCZM5ZHN6U/wcsrv/mangosdb/udb/unifieddb-cp/trunk/Full_DB
Scanning DIR /is/htdocs/wp10461234_RCZM5ZHN6U/wcsrv/mangosdb/udb/unifieddb-cp/trunk/Full_DB/ForCleanInstallOnly
parsing file characters.sql
parsing file realmd.sql
parsing file create_database_sd2.sql
Scanning DIR /is/htdocs/wp10461234_RCZM5ZHN6U/wcsrv/mangosdb/udb/unifieddb-cp/trunk/Full_DB/ForCleanInstallOnly/.svn
Scanning DIR /is/htdocs/wp10461234_RCZM5ZHN6U/wcsrv/mangosdb/udb/unifieddb-cp/trunk/Full_DB/ForCleanInstallOnly/.svn/text-base
parsing file create_mysql.sql.svn-base
Datei create_mysql.sql.svn-base nicht gefunden at ./replace.pl line 89.

Wie du sehen kannst, hab ich das Script angepasst, dass er anstatt Textdateien SQL-Dateien nimmt, aber daran wirds ja wohl kaum liegen, die ersten 3 Dateien bekommt er ja auch prima hin.
Ich versteh nicht,warum er die Datei nicht finden kann. Ôô

Belegthondion 08.06.2010 23:19:03

Hi,

sorry, Reply jetzt erst gesehen, hab auf ne PN gewartet.

Kann dir akut nicht sagen, warum er die nicht parsen kann. Ist die gelockt, dass er die nicht aufbekommt? Die Meldung fällt immer dann, wenn er sie nicht öffnen kann. Da wird nicht differenziert, warum es nicht geht.
Könntest mal in den zwei Datei-öffnen-Blöcken die Meldung am Ende "|| die "Datei $file nicht gefunden";" so differenzieren, dass er einmal meldet "konnte datei $file nicht öffnen" und einmal "konnte datei $file nicht schreiben". Dann sieht man immerhin, was er nicht kann. Aufgrund der Zeilennummer sieht das eher nach schreiben aus.

Wobei mir da grade ein anderer, saublöder Fehler auffällt... da ist eine Schleifen-Klammer falsch gesetzt...

Nimm mal bitte die Klammer und das ; aus den Zeilen nach dem 2. öffnen des Files (Zeile 93) und setz die über den Block mit dem File-Öffnen (also Zeile 88 oder sowas).

Viele Grüße
Simon

seimi 09.06.2010 09:23:58

Bitte füge eine Abfrage hinzu, dass er, wenn man kein Startverzeichnis übergibt, bitte NICHT das Rootverzeichnis nimmt...
Bin mal Backup einspielen.

Belegthondion 09.06.2010 12:53:41

Hi,

sorry, aber wie gesagt: War ohne Garantie und ungetestet (vor allem unter Linux...)

Ist denn noch Bedarf, dass Dingen weiter zu basteln?

Viele Grüße
Simon

seimi 09.06.2010 13:15:45

Ich denke ich komme von jetzt an allein klar.

Was möchtest du für deine Bemühungen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:22:43 Uhr.