Apache verhindert Speichern aus CGI #
Mein Webserver verweigert das Abspeichern von Perl-Ergebnissen aus CGIs sowohl in seinem Bereich als auch sonstwo auf der Maschine Root-Rechte etc habe ich schon geändert. Es liegt irgendwo an der httpd-configRoland roland_balzer@yahoo.de
Vorgehen von Markus Monderkamp
Mit Ausgabe des Rückgabewertes von '''print system('pwd')''' verrät httpd, wo er die CGI-Ausgaben hinwirft. Falls das scheitert, erleichtert bei mir ein '''use CGI::Carp qw(<nowiki>fatalsToBrowser</nowiki>)''' im Skriptkopf die Fehlersuche. HTH
unsortierte Pseudofaq-o-matic #
- Unterschied <b>my <-> our</b> Variablen-Deklaration ab Pörl 5.6?
- Erläuterungsversuch
Mit my erzeuge ich eine nur in der aktuellen Subroutine gültige lexikalische Variable, die nicht mit Paketangaben qualifiziert werden kann. Bei der Erzeugung bereits vorhandene Bezeichner gleichen Namens werden gesichert und bei Verlassen des Gültigkeitsbereiches wiederhergestellt. Mit our dito? Was ist der Nutzen von our?
Antwort von ThomasBayen
Wenn Du use strict vars benutzt, musst Du bei jeder Benutzung einer globalen Variable das Package mit angeben. Dies kommt letztlich daher, dass die Benutzung von globalen Variablen geächtet werden soll. Allerdings gibt es auch wichtige Gründe, globale Variablen zu benutzen, und zwar immer dann, wenn mehrere Subroutinen auf gemeinsame Daten zugreifen. Diese Daten gehören dann diesen Routinen zusammen. Deshalb deklariert man sie mit our (das sind _unsere_ Daten und nicht _meine_ wie bei my).
Jetzt wirst Du immer noch sagen: Das kann ich auch mit my. Der Unterschied ist, dass our echte globale Variablen erzeugt und nicht bei jedem Aufruf eine neue lokale. Der Inhalt der Variablen ist also persistent auch bei mehreren Aufrufen. Schau Dir mal dieses Beispiel an:
perl -e 'sub a{our $b;$b=not $b; print $b?"1":"0"};a;a;a;a;a;a;'
credits von MarkusMonderkamp:
Danke, nettes Beispiel. Mit "..(my $b;.." und meinem Perl prior 5.6 sehe ich nur Einsen. Zeit zum Upgraden meines uralten Debian-Hobels(Potato).
Bernd Dulfer:
Ohne als Klugscheißer dastehen zu wollen, aber die Variablen <b>$a</b> und <b>$b</b> sollte man ausschließlich in subs für Sortierung verwenden.
Für alle, die eine Erklärung auch auf Englisch verkraften, gibt's bei den Perl Monks ein Tutorial zu dem Thema: href=http://www.perlmonks.org/index.pl?node_id=105446
<Klugscheiss>Und wo bitteschön habe ich $a benutzt?!?</Klugscheiss> - ThomasBayen
Bemerkung von Markus Monderkamp:
>>> Danke. Für mich war der Einwurf nicht kleinkariert - ich habe nun zumindest gelernt, dass our nicht nur als Global-Ersatz für my dient. <<<
Frage von Markus: Wofür steht das Four Letter Acronym ACME in z.B. ACME::Bleach? Antwort: http://www.acme.com/what_is_acme.html ---- Frage: Schreibstil für Perl-CGI unter usemod-wiki? MarkusMonderkamp Antwort: Hier finde ich die ''[[aktuellen]]'' [http://www.usemod.com/cgi-bin/wiki.pl?TextFormattingRules Wiki-Syntaxregeln]. ----