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];
Und das jeweilige Array enstprechend shiften:
my $feld = shift;
my $wert = shift;
my $len = shit @{$prueftab{$feld};
for my $code_ref ( @{$prueftab{$feld}}) {
my $erg = $code_ref->($len, $feld, $wert);
}
... ungetestet.
Viele Grüße aus Frankfurt/Main,
Patrick