require Anfänger Problem
klaus
- cgi
Hallo,
ich wollte ein formmailcgi mehrsprachig ( mit platzhaltern für die Texte) gestalten und hab dazu mehrere Checkboxen in dem Skript eingebaut. Nach Auswahl der
Sprache wird über ein if Abfrage eine Sprachmodul geladen werden. Das hatte ich über require speech.lib ( darin sind die Texte) probiert und das geht auch beim 1. Mal.
Wenn der Nutzer aber nun eine neue Sprache auswählt wird die neue lib
nicht geladen.
Liegt das daran, dass die alte nun im speicher hängt und ich muss die irgendwie wieder unloaden, oder geht das so garnicht, oder hab ich nur ein Fehler gemacht?
Schonmal Danke für evtl Antworten.
hallo Klaus,
Liegt das daran, dass die alte nun im speicher hängt
wie denn das? CGI-Programme werden serverseitig ausgeführt. Auch wenn es sich dabei um ein PERL-Script handelt (was ich annehme), merkt der user in seinem Cache absolut nichts davon, in seinem Browser allerdings sehr viel
oder hab ich nur ein Fehler gemacht?
höchstwahrscheinlich. Aber das kann man nur überprüfen, wenn du deinen Code zur Diskussion freigibst und herschreibst oder (besser) als Text-File auf eine temporäre Adresse lädst.
Christoph S.
Halihallo Klaus
ich wollte ein formmailcgi mehrsprachig ( mit platzhaltern für die Texte) gestalten und hab dazu mehrere Checkboxen in dem Skript eingebaut. Nach Auswahl der
Sprache wird über ein if Abfrage eine Sprachmodul geladen werden. Das hatte ich über require speech.lib ( darin sind die Texte) probiert und das geht auch beim 1. Mal.
Wenn der Nutzer aber nun eine neue Sprache auswählt wird die neue lib
nicht geladen.
Liegt das daran, dass die alte nun im speicher hängt und ich muss die irgendwie wieder unloaden, oder geht das so garnicht, oder hab ich nur ein Fehler gemacht?
Nun, require required eine Datei nur _einmal_. D. h. wenn du zweimal die selbe Datei requirest, dann wird sie nur einmal geladen. Ich glaube, dass die Lösung mit require nicht für dein Problem geeignet ist, da require nicht dazu taugt "Daten" einzulesen, sondern "Code". Für eine genauere Problemanalyse solltest du den Code mal posten, insbesondere wann und wo und wie du die Library einliest (jede Sprache eine andere Library? - Was steht in der Library?)
Für eine Sprachlibrary tät ich folgendes empfehlen:
my $language = 'english';
my %language;
open( F, '<'.$language.'.lib' );
while (<F>) {
my ($text, $translated) = split /=/, 2;
$language{$text} = $translated;
}
close F;
print $language{'Hallo Welt'};
gibt dir ein 'Hello World' aus, wenn die Datei english.lib folgendes enthält:
Hallo Welt=Hello World
so in etwa wäre das, meiner Meinung nach, wesentlich besser, als mit require.
Viele Grüsse
Philipp
Dank euch beiden. Ich habs hinbekommen. Ich velier hin und wieder
mal den Überblick bei Perl und hangel mich mit Hilfe solcher
kleinen Listings wie von Philip gepostet dann wieder nach vorn ;)