Subroutinen in Tabelle def. und aufrufen
Nurmel
- perl
0 Alexander (HH)0 Nurmel0 Alexander (HH)0 Nurmel
0 Struppi1 Kurt Z0 Nurmel
Hallo,
zunächst möchte ich mich bei Kurt Z. bedanken, der jetzt wohl zurück ist aus der "Forenpause" und der mich in dem thread
http://forum.de.selfhtml.org/archiv/2008/3/t167968/#m1095701
sehr unterstützt hat.
Damit habe ich meine Aufgabe gelöst und dabei auch noch einiges gelernt!
Aber mit dem Essen kommt der Appetit!
Daher folgende Frage.
In dem nachfolgenden Beispiel werden alle Routinen mit den Parametern p1 bis p3 aufgerufen.
Ist es möglich, einzelnen Routinen zusätzliche oder andere Parameter mitzugeben?
my %prueftab;
$prueftab{feld1}=[\&pruef1,\&pruef11,\&pruef12];
$prueftab{feld2}=[\&pruef1,\&pruef2,\&pruef21,\&pruef22\&pruef23];
#......
# Loop über die Felder ($feld) und darin:
for my $code_ref ( @{$prueftab{$feld}} ) {
my $fehler_text_erg = $code_ref->($p1, $p2, $p3);
if ($fehler_text_erg ne "") {
# ...
}
# ...
}
Es soll also z.B. die Prüfung pruef21 mit den Parametern $p1, $p2, $p3
u n d $p4 aufgerufen werden.
(Eine Notlösung wäre, $p4 allen Routinen mitzugeben und sie dort zu ignorieren, bei mehreren solche optionalen Parametern wäre dies allerdings unschön!).
Schönen Sonntagsgruß
Nurmel
Moin Moin!
Versuchst Du zufällig, Data::FormValidator oder Params::Validate nachzubauen?
Alexander
Hallo,
Versuchst Du zufällig, Data::FormValidator oder Params::Validate nachzubauen?
Beides sagt mir nichts. Ich möchte nur mein Programm optimieren.
Gruß
Nurmel
Moin Moin!
Versuchst Du zufällig, Data::FormValidator oder Params::Validate nachzubauen?
Beides sagt mir nichts.
Dann verrate ich Dir jetzt das größte Geheimnis des WWW. Aber bitte nicht weitersagen, sonst kennt bald jeder Depp den Trick. Bist Du bereit?
Scroll weiter runter ...
Scroll noch weiter runter ...
Scroll noch weiter runter ...
Hyperlinks führen fast immer zu weiteren Informationen.
Ich möchte nur mein Programm optimieren.
"We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil." (Knuth, Donald. Structured Programming with go to Statements, ACM Journal Computing Surveys, Vol 6, No. 4, Dec. 1974. p.268.)
Alexander
Hallo,
Dann verrate ich Dir jetzt das größte Geheimnis des WWW. Aber bitte nicht weitersagen, sonst kennt bald jeder Depp den Trick. Bist Du bereit?
Das Geheimnis habe ich auch schon vor 30 Jahren gepredigt. Bei uns war es die 80:20-Regel.
Jetzt geht es bei mir aber um Hirnjogging und da kommt man halt auf allerhand abstruser Ideen.
Schönen Abend noch!
Nurmel
Es soll also z.B. die Prüfung pruef21 mit den Parametern $p1, $p2, $p3
u n d $p4 aufgerufen werden.
Wo kommt den p4 her? Du kannst doch soviele Parameter übergeben wie du möchtest (wenn du nicht prototypen verwendest)
(Eine Notlösung wäre, $p4 allen Routinen mitzugeben und sie dort zu ignorieren, bei mehreren solche optionalen Parametern wäre dies allerdings unschön!).
wieso wäre das unschön? So wie du es jetzt machst, geht das gar nicht anders
Struppi.
Hallo
wieso wäre das unschön? So wie du es jetzt machst, geht das gar nicht anders
Ich weiss, dass ich nichts weiss,
aber du scheinst immer alles zu wissen! Geht nicht, gibts nicht, siehe Beitrag Kurt Z.
wieso wäre das unschön? So wie du es jetzt machst, geht das gar nicht anders
Ich weiss, dass ich nichts weiss,
aber du scheinst immer alles zu wissen! Geht nicht, gibts nicht, siehe Beitrag Kurt Z.
Nein, ich weiß nicht alles, mir war z.b. nicht klar, dass du anstatt mehreren, nur einen Parameter übegeben willst.
Und was daran unschön seion soll, hast du auch nicht beantwortet.
Struppi.
Nein, ich weiß nicht alles, mir war z.b. nicht klar, dass du anstatt mehreren, nur einen Parameter übegeben willst.
Und was daran unschön seion soll, hast du auch nicht beantwortet.
Da solltest Du schon den nurmel fragen!
Hallo Tja!
Da solltest Du schon den nurmel fragen!
Ich glaube, Struppi hat schon den Richtigen gefragt.
Tja... ;)
Viele Grüße aus Frankfurt/Main,
Patrick
Ich glaube, Struppi hat schon den Richtigen gefragt.
... nö auf sowas hab ich eigentlich keinen Bock ...
Der Vorteil bei perl-community.de ist das Sockenpuppen ein LogIn brauchen oder als Gast angezeigt werden. Ich denke ich schränks hier mal ein bisschen ein.
ANregung: Toll wäre hier ein vissuelles Flag "Registered or Guest" zu realisieren. Ansonsten sind die technischen Features hier nämlich besser.
Cheers
Kurt
Hi
und der mich in dem thread
http://forum.de.selfhtml.org/archiv/2008/3/t167968/#m1095701
sehr unterstützt hat.
Damit habe ich meine Aufgabe gelöst und dabei auch noch einiges gelernt!
das freut mich.
Aber mit dem Essen kommt der Appetit!
Daher folgende Frage.
In dem nachfolgenden Beispiel werden alle Routinen mit den Parametern p1 bis p3 aufgerufen.
Ist es möglich, einzelnen Routinen zusätzliche oder andere Parameter mitzugeben?
das kommt ganz drauf an wie "anders" die Parameter sind.
Drei Vorschläge:
1. Übergib nur einen Parameter udn zwar die referenz auf ein Hash wo alle Paras drin stehen.
$paras_href={
p1 => 'pammel',
p2 => 'pummel',
p3 => 'pemmel',
p4 => 'pommel',
p5 => # ...
};
#und dann
my $fehler_text_erg = $code_ref->($paras_href);
nicht flexibel genug?
2. Dann leg auch zweidim. Parameterhash an
$paras{pruef1}={
p1 => 'pammel',
# ...
};
viel zu flexibel?
3. du willst keinen benannten sondern positionale Paras übergeben, dann stopf deine Paras in Arrays.
@standard=(p1,p2,p3);
@spezial =(p5,p6);
my $fehler_text_erg = $code_ref->(@standard,@spezial);
# die Arrays werden im Listenkontext abgeflacht, rüber kommt:
# $code_ref->(p1,p2,p3,p5,p6);
Wie du übergebene Referenzen dereferenziert weißt du ja jetzt.
zunächst möchte ich mich bei Kurt Z. bedanken, der jetzt wohl zurück ist aus der "Forenpause"
Du ich häng noch ne Woche dran ... ehrlich! :)
tschüss
Kurtz
Hallo Kurt Z.
Auf Dich ist Verlass! Danke
Gruß
Nurmel