Hallo zusammen,
um vielleicht noch ein paar Anregungen zu bekommen, werde ich mal versuchen, das Skript um das es geht ein wenig zu beschreiben. Den Code posten kann ich leider nicht, da es sich, wie oben geschrieben um Closed Source handelt.
Das Skript ist das Hauptskript eines CMS, es ist sehr gewachsener Code, daher nicht immer besonders schön, benutzt aber inzwischen komplett "use strict;", so dass globale Variablen kein Problem sein sollten.
In dem Skript wird die Seite aus einer Template Datei und der eigentlichen Datei mit dem Content zusammengebaut. Sowohl in dem Template als auch im Content sind Anweisungen notiert, die alle die Form
#!bezeichner: oder
#!bezeichner(parameter): haben.
Ganz grob sieht das ganze ungefähr so aus:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use strict;
my $OP = gib_mir_den_seiten_code();
&contentparser;
print $OP;
sub contentparser {
if ($OP =~ m/#!bezeichner1\(/) { $OP = UnserModul->parse_bezeichner1($OP); }
if ($OP =~ m/#!bezeichner2\(/) { $OP = UnserModul->parse_bezeichner2($OP); }
}
Ich weiß, dass das nicht gerade eleganter Code ist, das wird sich auch in nächster Zeit ändern, aber wir sind eine kleine Firma und der Code ist zum Teil recht alt.
Wenn ich das ganze als normales CGI Skript laufen lasse funktioniert es wunderbar, aber aus Performancegründen wollen wir das ganze unter mod_perl laufen lassen und da tritt jetzt das Phänomen auf, dass die
if die Bezeichner nicht erkennen, wenn ich die Seite aufrufe und sobald sie fertig geladen ist nochmals neulade.
Hoffe mein Problem ist so etwas verständlicher.
Gruss,
Tim aus Perl