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

Array mit splice ändern

Leser: 2


<< >> 5 Einträge, 1 Seite
pktm
 2003-11-24 01:44
#72741 #72741
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!
Ich habe mir da ein Script geschrieben, welches u.a. Navigationsleisten einer Webseite aktualisiert.
Die Webseite gehört dabei zu einem CMS.
In dem Script lese ich eine Webseite in ein Array ein, durchsuche diese dann auf im Code mit Kommentaren gekennzeichnete Bereiche (die Navigation) und merke mir, wo diese Bereiche sich befinden (Zeilenangabe).
Nachdem ich in meinem Script neue Navigationen gebaut habe muss ich die da aber jetzt einbauen.
Dazu würde ich gerne die Datei öffnen und die Bereiche mit splice substituieren.
Nur wenn ich jetzt den ersten Bereich im Array substituiere (es können mehrere Bereiche sein, z.B. hoziontale & vertikale Nav) ändert sich ja die Anzahl der Elemente des Arrays.
Wie mache ich das jetzt, dass ich den Bereich in dem ich die nächsten Änderungen vornehmen muss noch treffe und nicht irgendetwas anderes in der Datei überschreibe?

Ich habe mir da folgendes überlegt:
1. erneutes Durchsuchen der Datei auf die Kommentare (bin dagegen, zu viel Aufwand)
2. Vergleich des zu löschenden Bereiches mit dem einzufügenden Bereich, Miteinbeziehen der Abweichung bei der nächsten Substitution.
3. 2; nur mit 1 als Kontrolle

Hat wer eine andere Idee wie man das machen könnte?
Also bezgl. der Substitution im Array sowohl auch bezgl. der Aktualisierung der Webseite?

mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
kabel
 2003-11-24 08:37
#72742 #72742
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
das problem besteht darin, dass du zuerst wieder den inhalt der seite extrahieren musst, um dann den neuen inhalt einzufügen. soviele änderungen kommen da ja nicht vor?!

mein vorschlag ist, eine daten-datei aufzubauen, die die navigation in "rohform" enthält (z.b. ein HTML::Template mit einer LOOP), in der du dann nav. elemente einbauen kannst, und noch eine, die die navigationselemente enthält. dann beschränkt sich der aufwand immer nur auf das zusammenlegen dieser beiden dateien, was ziemlich schnell gehen dürfte.
-- stefan
Crian
 2003-11-24 11:29
#72743 #72743
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Mein Vorschlag ist, die Datei mit Tie::File an ein Array zu binden. In diesem kannst Du dann genau die splice-Operationen vornehmen, die Dir belieben.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
pktm
 2003-11-24 18:40
#72744 #72744
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
@Crian: Das mit Tie::File ist eine feine Sache, wäre es nicht so unschön und vielleicht auch noch von meinem Provider unterstützt :)

@kabel: Die Navigation habe ich ja in sofern schon ausgelagert, als dass das CMS templatebasiert ist. Und jedesmal 3 Dateien öffnen (2 sinds jetzt schon) ist mir zu aufwendig.
Was aber sinnvoll wäre: Navigation und Main_Template nur intern für das Admin-Script trennen.
Dann könnte der User auch besser Änderungen vornehmen, denn er muss ja die Navigation nicht berücksichtigen sondern nur PLatzhalter einfügen.
Sorry für den Monolog, wir lesen in der Schule gerade Faust I :D
mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
Crian
 2003-11-25 12:16
#72745 #72745
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
"unschön"? was denn genau?

nicht vom Provider unterstützt ist schon schlecht :(
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< >> 5 Einträge, 1 Seite



View all threads created 2003-11-24 01:44.