if ($f->{art} eq "popup_menu"){ my @values = lies_spalten_werte ($dbh, "kontakt", "$f->{name}"); push(@fields,td (escapeHTML ($bez)), td ($f->{art} (-name => $f->{name}, -size => $f->{size}, -value => \@values, -default =>$ref->{$f->{name}}))); } else{ push(@fields,td (escapeHTML ($bez)), td ($f->{art} (-name => $f->{name}, -size => $f->{size},-value => $ref->{$f->{name}}))); } ... sub lies_spalten_werte{ my ($dbh, $tabellen_name, $spalten_name) = @_; my @werte; @werte = lies_spalten_info ( $dbh, $tabellen_name, $spalten_name);# # vorne enum( oder set( entfernen # hinten ) entfernen $werte[1] =~ s/^[^(]*\((.*)\)$/$1/; # an Kommas aufspalten, # Anführungszeichen rund um jedes Wort entfernen @werte = split (/,/, $werte[1]); s/^'(.*)'$/$1/foreach (@werte); return (@werte); } sub lies_spalten_info{ my ($dbh, $tabellen_name, $spalten_name) = @_; my ($esc_spalten_name, @werte); # für den Fall, dass ein Spaltenname das %-Zeichen # enthält: % durch \% ersetzten ($esc_spalten_name = $spalten_name) =~ s/([_%])/\\$1/g; @werte = $dbh->selectrow_array ( "SHOW COLUMNS FROM $tabellen_name LIKE '$esc_spalten_name'" ); # @werte or die escapeHTML ("Keine Infos zu $tabellen_name.$spalten_name\n"); return (@werte); }