Schrift
[thread]2955[/thread]

subroutine aufruf von formular



<< >> 10 Einträge, 1 Seite
Gast Gast
 2006-01-16 10:36
#29596 #29596
guten morgen

ist es möglich aus einem html formular, welches ich in eine perl script generiere als action eine perl subroutine aufzurufen?

vielen danke
gruss andi
pq
 2006-01-16 11:24
#29597 #29597
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
nein, sowas macht man üblicherweise so:
Code: (dl )
1
2
3
if ($cgi->param('action') eq 'foo') {
 foo();
}
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
Grimm
 2006-01-16 13:35
#29598 #29598
User since
2006-01-16
7 Artikel
BenutzerIn
[default_avatar]
ok vielen dank für die schnelle antwort.
cooles board hier, habs leider erst jetzt entdeckt ;)
Taulmarill
 2006-01-16 14:23
#29599 #29599
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
es kann u.U. auch sinnvoller sein, ein eigenes cgi script für die einzelnen aufgaben/seiten zu machen. so was lässt sich später besser anpassen weil es kleiner und übersichtlicher ist. gemeinsame funktionen kann man dann in ein modul auslagern.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Grimm
 2006-01-16 15:17
#29600 #29600
User since
2006-01-16
7 Artikel
BenutzerIn
[default_avatar]
danke für den tipp.
Strat
 2006-01-16 16:08
#29601 #29601
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
wenn da recht viele aktionen kommen (vielleicht auch noch in zusammenhang mit einem templating system), verwende ich gerne einen hash zur steuerung, z.B.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use CGI;
use vars qw(%Actions);
%Actions = (
eins => { code => \&Action1, template => 'action1.tmpl', x => 20 },
zwei => { code => \&Action2, template => 'action2.tmpl', a => 30 },
drei => { code => \&Action3, template => 'action3.tmpl', foo => 'bar' },
default => { code => \&Start, template => 'start.tmpl' },
};

my $cgi = CGI->new();
my $action = $cgi->param('action');

if ( defined $action and exists %Actions{$action} ) {
$Actions{$action}->{code}->($cgi, $action);
}
else {
$Actions{"default"}->{code}->($cgi, "default");
} #else
# --------------------------------
sub Action1 {
my ($cgi, $action) = @_;
my $template = $Actions{$action}->{template};
...
} # Action1
# -------------------------

Es gibt zwar einige CPAN-Module, die sowas aehnliches machen, aber da kann man (zumindest bei den mir bekannten) im Hash nicht so viele Infos unterbringen...\n\n

<!--EDIT|Strat|1137420544-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
pKai
 2006-01-16 17:39
#29602 #29602
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
Warum ist %Actions global?
I sense a soul in search of answers.
Taulmarill
 2006-01-16 17:43
#29603 #29603
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
bevor man sich 'nen eigenen dispatcher baut, sollte man evtl. auch mal einen blick auf Catalyst werfen.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Strat
 2006-01-16 20:01
#29604 #29604
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=pKai,16.01.2006, 16:39]Warum ist %Actions global?[/quote]
Fuer die meisten Programme brauche ich eine Konfiguration, die haeufig in Perl selbst sein kann. Fuer die verwende ich meist ein eigenes Package (z.B. MyApp::Config). Damit fallen schon mal my-Variablen weg, weil ich auf die nicht von ausserhalb zugreifen kann und ich in den seltensten Fällen über Subroutineninterfaces darauf zugreifen will (siehe auch Konstanten).

Der IMHO logischste Weg waeren dann Konstanten. Da ich jedoch die Perl-Konstanten bei der Verwendung von mehreren Packages aeusserst unhandlich und haesslich finde (z.B. &MyApp::Config::PAGE_SIZE) und ich dafür keinen Exporter verwenden will, bleibt mir nur noch der Weg ueber globale Variablen, die ich readonly verwende, idealerweise via CPAN:Readonly. Leider ist Readonly noch kein Standardmodul...

In meinen Codes unterscheide ich auch in der Schreibweise streng zwischen $GlobalenVariablen und $lokalenVariablen und stecke solche globalen Config-Variablen in ein eigenes Packages, sodass da IMHO kein lesbarkeitsdefizit entsteht.
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
esskar
 2006-01-17 01:56
#29605 #29605
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=Taulmarill,16.01.2006, 16:43]bevor man sich 'nen eigenen dispatcher baut, sollte man evtl. auch mal einen blick auf Catalyst werfen.[/quote]
Taulmarill++
<< >> 10 Einträge, 1 Seite



View all threads created 2006-01-16 10:36.