perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 28
Click for quality!




08.02.2012 / 22:30

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


Beitraguse 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: use strict will nicht
Seitenanfang
Gibt's ne Fehlermeldung? Was heißt "dann ists vorbei"?

Datum: 28.03.2007-13:25

Beitragre: use strict will nicht
Seitenanfang
keine Fehlermeldung. Nur das hinaufgeladene Bild hat 0 Byte.

Datum: 28.03.2007-14:13

-






-
-