Leser: 23
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
#!/usr/bin/perl -w use strict; use warnings; use diagnostics; use CGI; my $cgi=CGI->new; my %data = ( test1 => ['anzeige1','anzeige2'], test2 => ['val1','val2'], ); build_formfield(\%data); sub build_formfield { my %deref = %{$_[0]}; if (1==2) { # nur zum Umschalten für Tests print STDOUT $cgi -> popup_menu ( -name => 'fieldname', -values => $deref{'test2'}, # dies hier klappt (natürlich nicht): -labels => {$deref{'test2'} => $deref{'test1'}} ); } else { print STDOUT $cgi -> popup_menu ( -name => 'fieldname', -values => ['value1','value2'], # und das soll rauskommen: -labels => { 'value1' => 'anzeige1', 'value2' => 'anzeige2', }, ); } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
my %deref = %{$_[0 my %hash_for_popup; my @values = @{ $deref{test1} }; my @labels = @{ $deref{test2} }; @hash_for_popup{ @values } = @labels; # ... print STDOUT $cgi -> popup_menu ( -name => 'fieldname', -values => $deref{'test2'}, -labels => \%hash_for_popup );
1 2 3 4
my @values = @{ $deref{test1} }; my @labels = @{ $deref{test2} }; my %hash_for_popup = map{ $deref{test1}->[$_] => $deref{test2}->[$_] }( 0 .. $#{$deref{test1}} );
2010-06-28T15:52:33 reneeDas kann man ganz einfach mit nem Hashslice machen
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
#!/usr/bin/perl -w use strict; use warnings; use diagnostics; use CGI; my $cgi=CGI->new; my %data = ( test1 => ['anzeige1','anzeige2'], test2 => ['val1','val2'], ); build_formfield(\%data); sub build_formfield { my %deref = %{$_[0]}; my %hash_for_popup; my @values = @{ $deref{test1} }; my @labels = @{ $deref{test2} }; @hash_for_popup{ @values } = @labels; print STDOUT $cgi -> popup_menu ( -name => 'fieldname', -values => $deref{'test2'}, -labels => \%hash_for_popup, ); }
1
2
3
4
<select name="fieldname" >
<option value="val1">val1</option>
<option value="val2">val2</option>
</select>
2010-06-28T15:52:33 renee(dazu gab es auch mal 'nen Artikel in $foo Nr. 4
2010-06-28T15:52:33 reneeedit2: Aber eigentlich würde ich das eher über ein Template-System lösen als mit CGI.pm
2010-06-28T16:05:30 biancaWas hab ich bei der Implementierung falsch gemacht?
2010-06-28T16:12:26 reneemach mal aus
2010-06-28T15:52:33 renee(dazu gab es auch mal 'nen Artikel in $foo Nr. 4
2010-06-28T16:05:30 biancaHat mich bisher abgeschreckt, dass es die nur auf Papier gibt. Wurde das mittlerweile geändert?
2010-06-28T15:52:33 reneeedit2: Aber eigentlich würde ich das eher über ein Template-System lösen als mit CGI.pm