Schrift
[thread]5923[/thread]

perperl



<< |< 1 2 >| >> 17 Einträge, 2 Seiten
ppm1
 2003-11-23 23:22
#72706 #72706
User since
2003-09-14
142 Artikel
BenutzerIn
[default_avatar]
Hallo

Seidem ich usr/bin/perperl statt perl benutzte, also irgendso ein Speedy oder sowas, also seitdem habe ich Probleme:

-Er gibt mir in Subrutinen falsche Daten zurück, z.B. wenn ich dort etwas schreibe und eine Variable verwende, die entweder irgendwo global oder irgendwo auserhalb der Subrutinen definiert wurde.

Früher ging das alles trotz diagnostics, strict, warnings....

Was mache ich falsch?

Darf ich keine Variablen mehr global dann definieren?

Muss ich jeder Subrutine ihre Variablen per Subrutinen(xx,xx,xx) usw übergeben?


ODer gibt es eine Möglichkeit Variablen freizugeben?

Patrick müller
jan10001
 2003-11-23 23:26
#72707 #72707
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Verwendst du eigentlich "my"?
ppm1
 2003-11-23 23:41
#72708 #72708
User since
2003-09-14
142 Artikel
BenutzerIn
[default_avatar]
my verwende ich ja fast nur.

aber: bisher hat das keine Probleme gemacht nur jetzt....

ich weiß auch nicht, vielleicht sollte ich die ganze Skripte überarbeiten.
format_c
 2003-11-23 23:52
#72709 #72709
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Und was sagt /usr/bin/perl dazu?

Gruß Alex
Strat
 2003-11-24 01:24
#72710 #72710
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
du solltest variablen immer explizit in eine subroutine uebergeben und wieder zurueck geben. nur jede variable mit my zu deklarieren und sie dann wie eine globale variable zu verwenden ist oft schaedlicher als gleich mit globalen variablen zu arbeiten.

kenne jedoch perperl nicht
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Crian
 2003-11-24 11:13
#72711 #72711
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Verwendest Du auch use strict? Vielleicht ist Dir irgendetwas durcheinander geraten, was use strict aufdecken könnte?
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
Gast Gast
 2003-11-24 16:29
#72712 #72712
Ja ich verwende use strict;

usr/bin/perl meldet ja eben gar nicht, also läuft ohne Probleme...

Aber wenn ich das perperl (eigentlich CGI::SPEEDYCGI) verwende, laufen die Skripte nahc dem 2. Aufruf 10 mal so schnell, weil sie im Speicher bleiben, aber es gibt irgendwie Probleme mit den Globalen Variaben oder wenn ich mit my z.b ein Beispiel


my $xxlzeit = 5;

use Oben {

my $xxlzeit=3;
}

use Test {

print "$xxlzeit";
}


Bei normalen Perl: kein Problem: Bei perperl wird $xxlzeit vom ersten Aufrufer verwendet, z.B. 10....


Patrick Müller
Crian
 2003-11-24 16:43
#72713 #72713
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Hmmm die Syntax die Du verwendest ist mir unbekannt.

Normalerweise kommt nach "use Libname" kein Block, sondern ggf. nähere Angaben in runden Klammern und dann ein Semikolon.

Generell könnte ich mir nach Deiner Beschreibung vorstellen, dass globale Variablen im Speicher bleiben und ev. die Zeilen ihrer Definition zu Beginn des Programms nicht wieder durchlaufen werden. Eine Abhilfe wäre in diesem Fall, wenn Du eine Funktion schreibst in der Du alle globalen Variablen (es sollten eh möglichst wenige sein) initialisierst und diese immer beim Programmstart aufrufst.

Edit: Es würde wohl auch reichen, statt

Code: (dl )
my $variable = 42;


Code: (dl )
1
2
my $variable;
$variable = 42;


zu schreiben, wenn meine Vermutung richtig ist.

Edit2: Ich stell mir das so vor wie statische Variablen in C-Funktionen...\n\n

<!--EDIT|Crian|1069685377-->
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
havi
 2003-11-24 16:49
#72714 #72714
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Schau dir mal Crian's oder meine Signatur an.

Du verwendest use strict, aber verwendest du auch
Code: (dl )
use warnings;


Gruss

Edit: naeheres dazu auf meiner HP und zwar genau hier :)\n\n

<!--EDIT|havi|1069685698-->
ppm1
 2003-11-24 23:19
#72715 #72715
User since
2003-09-14
142 Artikel
BenutzerIn
[default_avatar]
Die Module verwende ich alle:

Kann es sein, dass bei perperl das Skript immer dasselbe ausgibt? Wenn ich z.B. eine Skript schreibe, das mir bei unterschiedlichen QuerryString unterschiedliche Steitenanzeigen soll, bekomme ich immer die selbe seite?

Kann es sein, dass Rutinen immer die selben Daten mit return zurückliefern?
<< |< 1 2 >| >> 17 Einträge, 2 Seiten



View all threads created 2003-11-23 23:22.