If you just run it, it should work properly.
When I run this with c1=1, the checked="checked" disappears
on my system.
Regarding the calling convention, the following excerpt is from
http://stein.cshl.org/WWW/software/CGI/#debugging
Debugging
If you are running the script from the command line or in the perl debugger, you can pass the script a list of keywords or parameter=value pairs on the command line or from standard input (you don't have to worry about tricking your script into reading from environment variables). You can pass keywords like this:
my_script.pl keyword1 keyword2 keyword3
or this:
my_script.pl keyword1+keyword2+keyword3
or this:
my_script.pl name1=value1 name2=value2
or this:
my_script.pl name1=value1&name2=value2
If you pass the -debug pragma to CGI.pm, you can send CGI name-value pairs as newline-delimited parameters on standard input:
% my_script.pl
first_name=fred
last_name=flintstone
occupation='granite miner'
^D