use strict will nicht
|
Seitenanfang |
| Hallo! Ich habe ein seltsames Phänomen. Ich weise am Anfang eines großen Scripts die übergebenen Parameter des CGI Moduls meinem eignen Hash zu. Hier der Code:
use CGI::Carp qw(fatalsToBrowser); use CGI qw(:standard); use strict; my %query; $query{$_}=param($_) foreach (param);
Ich bekomme den Fehler "Global symbol "%query" requires explicit package name at ...". Den weise ich doch in der Zeile drüber zu oder nicht. mit "use strict qw(!refs);" funktionierts. Hat von Euch jemand ne Idee, wo der Fehler liegen könnte?
Datum: 25.03.2007-01:31

|
re: use strict will nicht
|
Seitenanfang |
Da lässt sich kein Fehler finden, trotzdem ein kleiner Tipp: my %query; $query{$_}=param($_) foreach (param);
dafür hat CGI eine Funktion parat my %query = Vars();
siehe http://search.cpan.org/~lds/CGI.pm-3.27/CGI.pm#FETCHING_THE_PARAMETER_LIST_AS_A_HASH%3A
Datum: 25.03.2007-03:30

|
re: use strict will nicht
|
Seitenanfang |
| Danke für den Tipp, hab ich wohl übersehen in der Docu. Dafür muss ich aber auch ':cgi-lib' einbinden. Die Frage ist, was aus der Sicht der Preformance besser ist. Das Script wird sehr oft von sehr vielen Benutzern ausgeführt und auf Preformance ist deshalb sehr viel wert zu legen :-( mfg, Speed
Datum: 25.03.2007-22:15

|
re: use strict will nicht
|
Seitenanfang |
wenn du performance brauchst, solletst du nicht an solchen kleinigkeiten sparen, sondern eher mod_perl verwenden. bis ein cgi-skript kompiliert ist, dauert so lange, dass du den unterschied, ob du CGI.pm OO verwendest oder nicht, nicht merken wirst.
Datum: 28.03.2007-16:16

|
re: use strict will nicht
|
Seitenanfang |
PS.: so schaut jetzt mein use aus:
use CGI (':standard',':cgi-lib');
Kann man messen, welche Einbusen das einbinden von ':cgi-bin' mit sich bringt bzw was schneller ist?
Datum: 25.03.2007-22:45

|
re: use strict will nicht
|
Seitenanfang |
Du musst Vars nicht importieren, du kannst Vars über den vollqualifizierten Namen aufrufen
my %params = CGI::Vars();
oder du importierst statt Tags ':cgi-lib' nur die Funktion 'Vars' allein.
use CGI qw( :standard Vars );
Ich selbst bevorzuge den objekt-orientierten Weg
use CGI qw();my $cgi = CGI->new(); my %params = $cgi->Vars();
so wird der Namensraum nicht zugemüllt.
Datum: 26.03.2007-02:04

|
re: use strict will nicht
|
Seitenanfang |
Habe im Alpaka-Buch gelesen, dass Objekte etwas langsamer arbeiten. Ich werde mich für folgende Variante eintscheiden:
use CGI (':standard',':Vars'); my %query = Vars();
Vielen Dank für Deine Hilfe.
Datum: 26.03.2007-08:07

|
re: use strict will nicht
|
Seitenanfang |
| Die Objektorientierung oder die Verwendung des CGI-Moduls ist in den meisten Fällen *nicht* der Flaschenhals! Geschwindigkeitseinbußen fallen eher bei Datenbankverbindungen an (Oracle braucht z.B. recht lange), unnötige Queries, ungeschickte Algorithmen,...
Datum: 26.03.2007-19:00

|
re: use strict will nicht
|
Seitenanfang |
| Hallo! Vars() funktioniert nicht richtig. Bei normalen Daten kein Problem, aber wenn ich ein Bild raufladen will, ists vorbei. mfg, perler
Datum: 27.03.2007-15:46

|
re: use strict will nicht
|
Seitenanfang |
| Gibt's ne Fehlermeldung? Was heißt "dann ists vorbei"?
Datum: 28.03.2007-13:25

|
re: use strict will nicht
|
Seitenanfang |
| keine Fehlermeldung. Nur das hinaufgeladene Bild hat 0 Byte.
Datum: 28.03.2007-14:13

|