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

httpd.conf bei apche2 unter suse 9.3 ganz anders (Seite 2)



<< |< 1 2 3 >| >> 26 Einträge, 3 Seiten
Froschpopo
 2005-11-09 12:10
#31227 #31227
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
hmmm, also in der error_log steht zumindest nichts und ich verwende warnings. Funktioniert eigentlich alles recht problemlos.

Kann man dem Handler nicht irgendwie eine Liste von Variablen mitgeben, die er als "global" und NUR für diesen Handler nutzen soll?
Also ich erfinde mal ein Beispiel:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
use ModPerl::ApacheRegistry ('$x'); # oder sowas

our $x = 23;
sub handler {
sub inner {
print "inner before: $x";
$x = $x + 42;
print "inner: $x";
}
}

müssste doch theoretisch möglich und viel unkomplizierter sein, als wie wenn man alles komplett in ein modul auslagert. Das ist doch wahnsinn bei nem größeren script !
pq
 2005-11-09 13:11
#31228 #31228
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Froschpopo,09.11.2005, 11:10]müssste doch theoretisch möglich und viel unkomplizierter sein, als wie wenn man alles komplett in ein modul auslagert. Das ist doch wahnsinn bei nem größeren script ![/quote]
dann machs halt so wie du denkst.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
pq
 2005-11-09 13:17
#31229 #31229
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Froschpopo,09.11.2005, 11:10]Also ich erfinde mal ein Beispiel:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
use ModPerl::ApacheRegistry ('$x'); # oder sowas

our $x = 23;
sub handler {
sub inner {
    print "inner before: $x";
    $x = $x + 42;
    print "inner: $x";
}
}
[/quote]
das beispiel ist aber falsch.
ich sagte doch, die subroutine handler wird außenherum
geschrieben. außen heißt nicht, dass es erst nach dem our() kommt.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package module;
use strict;
use warnings;
sub handler {
   my $x = 23;
   sub inner {
       #my $x = $x;
       print "inner before: $x\n";
       $x = $x + 42;
       print "inner: $x\n";
   }
   inner();
}
package main;
module::inner();

ergebnis:
Variable "$x" will not stay shared at handler.pl line 9.
Use of uninitialized value in concatenation (.) or string at handler.pl line 9.
inner before:
Use of uninitialized value in addition (+) at handler.pl line 10.
inner: 42

warum du keine fehler im log bekommst, weiß ich nicht, aber du warst
derjenige, der gesagt hat, dass dein skript nicht korrekt läuft. in einem
anderen thread jedenfalls.
vielleicht sieht es aber in mod_perl2 ganz anders aus. das weiß ich nicht.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Froschpopo
 2005-11-09 14:40
#31230 #31230
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
_theretisch_ ist das aber schon möglich dem mod_perl zu sagen, dass es gewisse Variablen AUßERHALB des Handlers anbringen soll ! Kann mir nicht vorstellen, dass sowas nicht gehen soll.

vielleicht mit use vars qw($sessionid) oder so...?\n\n

<!--EDIT|Froschpopo|1131540135-->
GwenDragon
 2005-11-09 14:50
#31231 #31231
User since
2005-01-17
14601 Artikel
Admin1
[Homepage]
user image
Was hast du dagegen, Varaiblen sauber zu definieren, beim Start (BEGIN) des Skripts zu initialisieren und wenn nötig am Ende (END) wieder frei zu geben?

Was hast du denn mit solchen globalen Variablen vor?
Froschpopo
 2005-11-09 15:13
#31232 #31232
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Also ihr bringt mich ganz durcheinander der eine erzählt mir was von modul und der andere von variablen !

Zu deiner letzten frage: Das sind Variablen die in jeder subroutine benötigt werden. Ich fand das zu viel schreibarbeit, in jeder subroutine erneut $var = param('var') aufzurufen. Deshalb hatte ich den querry string mittels CGI.pm in ein hash eingelesen. das ssieht dann so aus:

our %variables = $cgi->Vars()

findest du das "nicht sauber"?
Das ist ja nicht die Regel, sondern eher eine Ausnahme die vlt. 4-5 mal gemacht wird.\n\n

<!--EDIT|Froschpopo|1131542187-->
pq
 2005-11-09 15:22
#31233 #31233
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
globale variablen sind manchmal notwendig, aber werden oft unnötigerweise benutzt.
und ich würde wetten, in deinem script benutzt du globale variablen, die keine
sein müssten.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Froschpopo
 2005-11-09 15:35
#31234 #31234
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Ich lese eine Konfigurationsdatei ein !
Die Werte daraus brauch ich in so ziemlich jeder Sub.
Es handelt sich dabei um einen hash und ein array.
Wie mach ich die wieder am ende des scripts ungültig?

mir fiel bisher nur undef %hash ein.\n\n

<!--EDIT|Froschpopo|1131543459-->
pq
 2005-11-09 15:44
#31235 #31235
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
mach sie nicht global, zum einen. oder sprich sie als package-variablen an.
oder schreib ein modul, dass diese variable zur verfügung stellt (mittels Exporter).
es gibt viele möglichkeiten.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Froschpopo
 2005-11-09 16:17
#31236 #31236
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Also du meinst dann $main::variable ?
<< |< 1 2 3 >| >> 26 Einträge, 3 Seiten



View all threads created 2005-11-03 10:48.