my %label = ( one => 'foo', two => 'bar', three => 'baz', ); #### print checkbox_group( -name => 'checkbox', -values => [keys %label], -labels => \%label, ); #### # create an array whose keys all have values 'no' my %checkbox = map { $_ => 'no' } keys %label; # update each found key's value to 'yes' $checkbox{$_} = 'yes' for param('checkbox'); #### #!/usr/bin/perl -T use strict; use warnings; use CGI qw(:standard); my %label = ( one => 'foo', two => 'bar', three => 'baz', ); print header, start_html('checkbox test'), start_form, checkbox_group( -name => 'checkbox', -values => [keys %label], -labels => \%label, ), submit('go'), end_form, ; if (param('go')) { my %checkbox = map { $_ => 'no' } keys %label; $checkbox{$_} = 'yes' for param('checkbox'); print table({border=>1}, Tr(th[qw(Var Val)]), map Tr(td[$_,$checkbox{$_}]), keys %checkbox ); }