Schrift
[thread]263[/thread]

Subroutinen: von html-formular aufrufen

Leser: 1


<< |< 1 2 3 4 >| >> 32 Einträge, 4 Seiten
jemand
 2004-05-23 23:24
#2525 #2525
User since
2004-05-14
231 Artikel
BenutzerIn
[default_avatar]
hi,
ich möchte eine html seite schreiben um in ein formularfeld den namen einer subroutine einzugeben und die parameter in ein anderes um ein größeres skript zu testen
gibts da irgendeine funktion der man einen $ übergibt und dann die subroutine entsprechenden namens ausführt??
ich hab nämlich keine lust da virzig if-abfragen zu machen...
print uc 'i',chr(29*4).q+'s +.++($_=q-m-),++$_;
print chr for 116,$_[0],97,$_[0],98;
print 'ug,',chr(), scalar reverse qq?!erutaef a s'ti?;
esskar
 2004-05-23 23:50
#2526 #2526
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Code: (dl )
1
2
3
4
5
6
7
sub test
{
print "Das ist ein Test\n";
}

my $var = "test";
eval(&$var);
Strat
 2004-05-24 01:41
#2527 #2527
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
schau dir mal CPAN:Switch oder CPAN:CGI::Application an, die unterstuetzen dich dabei
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
jemand
 2004-05-25 19:00
#2528 #2528
User since
2004-05-14
231 Artikel
BenutzerIn
[default_avatar]
danke
wie kann man eval parameter an die aufzurufende funktion übergebn??
geht das überhaupt??
bei mir gings nämlich nicht...:(
print uc 'i',chr(29*4).q+'s +.++($_=q-m-),++$_;
print chr for 116,$_[0],97,$_[0],98;
print 'ug,',chr(), scalar reverse qq?!erutaef a s'ti?;
coax
 2004-05-25 20:03
#2529 #2529
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
1
2
3
4
5
6
$var = 'routine';

eval(&$var('arg1', 'arg2'));
#eval(&{$var}('arg1', 'arg2'));

sub routine { print "$_\n" for @_; }
,,Das perlt aber heute wieder...'' -- Dittsche
jemand
 2004-05-29 18:18
#2530 #2530
User since
2004-05-14
231 Artikel
BenutzerIn
[default_avatar]
Danke so gings
jetzt hab ich noch 'n paar fragen zu subroutinen allgemein:
1.was passiert wenn man zu wenige parameter übergibt?
2.was passiert wenn man zu viele parameter übergibt?
3. " wenn man zu wenige rückgabewerte annimmt?
4. " wenn man zu vielr rückgabewerte erwartet?
print uc 'i',chr(29*4).q+'s +.++($_=q-m-),++$_;
print chr for 116,$_[0],97,$_[0],98;
print 'ug,',chr(), scalar reverse qq?!erutaef a s'ti?;
renee
 2004-05-29 18:31
#2531 #2531
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wenn Du zu wenig Parameter übergibst z.B.:
Code: (dl )
1
2
3
4
5
#! /usr/bin/perl 
routine('eins', 'zwei');
sub routine{
my ($test,$zwei,$drei) = @_;
}

Dann bleibt $drei undef

2.)
Code: (dl )
1
2
3
4
5
#! /usr/bin/perl 
routine('eins', 'zwei');
sub routine{
my ($test) = @_;
}

Dann verschwindet das 'zwei' im Nirwana

3.)
Code: (dl )
1
2
3
4
5
#! /usr/bin/perl 
my ($eins,$zwei) = routine();
sub routine{
return ('eins','zwei','drei');
}

'drei' verschwindet im Nirwana


4.)
Code: (dl )
1
2
3
4
5
#! /usr/bin/perl 
my ($eins,$zwei,$drei,$vier) = routine();
sub routine{
return ('eins','zwei','drei');
}

$vier bleibt undef
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
esskar
 2004-05-29 18:32
#2532 #2532
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
bei perl ist das schöne, dass es sowas wie ein beschränkung der anzahl der parameter bei funktionen nicht (unbedingt) gibt
alle übergebenen parameter werden in @_ gespeichert
bsp

Code: (dl )
1
2
3
4
5
6
7
8
sub showparam
{
print "$_\n" foreach @_;
}


showparam("Hallo", "Du");
showparam("Hallo", "Du", "!", "Wir", "sind", "ganz", "viele", "Parameter", "!");


rückgabewerte sind da ähmlich...

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
sub returnthree
{
return ("eins", "zwei", "drei");
}

my ($var1, $var2, $var2, @vars);

$var1 = returnthree();
print "$var1\n";

($var1) = returnthree();
print "$var\n";

($var1, $var2) = returnthree();
print "$var1; $var2\n";

($var1, $var2, $var3) = returnthree();
print "$var1; $var2; $var3\n";

@vars = returnthree();

($var1, undef, $var3) = returnthree();
print "$var1; $var3\n";
jemand
 2004-05-29 20:48
#2533 #2533
User since
2004-05-14
231 Artikel
BenutzerIn
[default_avatar]
gut dann muss ich nicht das alles nochmal überprüfen
wenn man subroutinen noch ändert aber schon aufrufe geschrieben hat...hat man keine arbeit mehr sondern kann sich sonnen:cool:
print uc 'i',chr(29*4).q+'s +.++($_=q-m-),++$_;
print chr for 116,$_[0],97,$_[0],98;
print 'ug,',chr(), scalar reverse qq?!erutaef a s'ti?;
Strat
 2004-05-30 02:18
#2534 #2534
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
statt mit eval verwende ich lieber sowas wie das folgende (wenn die Funktionalitaet von Switch oder Konsorten nicht mehr ausreicht)
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use vars qw(%Config); # "global" ist dafuer manchmal besser

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

%Config = (
default => { subroutine => \&Default, ... },
action1 => { subroutine => \&Action1, ... },
action2 => { subroutine => \&Action2, ... },
);

if (exists $Config{$action} and exists $Config{$action}->{subroutine}) {
$Config{$action}->{subroutine}->($cgi, ...);
}
else { # call default, or errorhandling, or whatever
$Config{default}->{subroutine}->($cgi, ...);
} # else


allerdings hat man so keine ueberpruefung, ob wirklich jede Subroutine existiert...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< |< 1 2 3 4 >| >> 32 Einträge, 4 Seiten



View all threads created 2004-05-23 23:24.