Patrick Andrieu: Würde die Routine gerne verallgemeinern

Beitrag lesen

Hallo Kurti!

Was mich darn stört, ist, dass bei den Routinen test_ob_minlae für jede Länge eine eigene Routine angegeben ist.
Gibt es eine Möglichkeit, in den einzelnen Regeln der %prueftab die Länge anzugeben und in    e i n e r    Routine test_ob_minlae diesen Parameter abzufragen?

Wenn ich richtig verstanden habe, soll je nach Textfeld auf eine unterschiedliche Mindestlänge geprüft werden, diese ist mal 2, mal 3, mal 5, mal 10?

Wenn ja, dann würde in der Tat eine Funktion reichen, der man die gewünschte Länge, die zu prüfen ist, als Parameter übergibt:

sub min_length {  
    my ($len, $feld, $wert) = @_;  
    length($wert) < $len ? return 0 : return 1;  
}

Dafür müsste man in dem HoA (Hash of Arrays) die Länge mit angeben:

   $prueftab{'Name'}=[3, \&test_mussfeld,\&min_length,\&too_much_chars,\&too_much_digits,\&test_ob_Name];  
#                     ^ Hier Länge,       ^geändert

Und das jeweilige Array enstprechend shiften:

   my $feld = shift;  
   my $wert = shift;  
   my $len = shit @{$prueftab{$feld};    # HIER  
   for my $code_ref ( @{$prueftab{$feld}}) {  
      my $erg = $code_ref->($len, $feld, $wert); # und natürlich die Länge als Paramter übergeben  
# ...  
   }

... ungetestet.

Viele Grüße aus Frankfurt/Main,
Patrick

--
_ - jenseits vom delirium - _

   Diblom   [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
Achtung Agentur! | Nichts ist unmöglich? Doch! | Heute schon gegökt?