Hallo ihr Board-Programmierer, ich hab mir gerade mal den Code (code_2003_11_04.tar.gz) geholt und beginne ihn mir anzusehen.
Ich muss dazu sagen, ich hab noch keine cgi's programmiert und mir kommt vieles unbekannt vor ...
Ich vermute mal man sollte anfangen in cgi-bin/board.cgi zu lesen, was Perlcode zu sein scheint.
Beim Lesen tauchen ein paar fragen auf (naja bisher eine), ich werde sie hier einfach mal posten, aber wenn das Beantworten zu sehr nervt oder aufhält dann ignoriert die Fragen.
Zum Codeabschnitt
my $action = $cgi->param('action') || 'overview';
# main switch; see PBoard::Config for details
if (exists $PBoard::Config::Actions{$action}->{subroutine}) {
$PBoard::Config::Actions{$action}->{subroutine}->($cgi, $action);
} # if
else { # execute default action; maybe replace it by errorhandling later
$PBoard::Config::Actions{'overview'}->{subroutine}->($cgi, 'overview');
} # else
Ich habe den Eindruck, dass hier doppelt gemoppelt wird... einerseits wird erstmal
$action auf 'overview' gesetzt, falls es den CGI-Parameter 'action' nicht gibt (soweit ich das verstehe jedenfalls), dann wird nochmal abgefragt, ob es die Subroutine zur Aktion
$PBoard::Config::Actions{$action}->{subroutine} gibt und im positiven Fall wird duiese mit
$cgi und
$action aufgerufen. Falls es sie nicht gibt, wird
$PBoard::Config::Actions{'overview'}->{subroutine} mit den Parametern
$cgi und
'overview' aufgerufen, d.h. es wird wohl sichergestellt, dass es diese Subroutine (im Hash) gibt.
Ah jetzt versteh ich es doch... Für den Fall, dass es keinen Action-Paramater gibt, wird if-case durchlaufen, aber der else-Case ist für den Fall da, dass es zwar den Action-Parameter gibt, im Hash aber keine Subroutine dafür vorgesehen wurde. Dann soll defaultmäßig die overview-Aktion durchgeführt werden.
Hmmm ...
die Frage ist beantwortet... ich poste aber trotzdem mal, es tauchen bestimmt noch weitere Fragen auf :-D\n\n
<!--EDIT|Crian|1068557971-->
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