It's quite strange, and does seem like a bug. I don't have access to a newer version of CGI just now, so not sure if it's been fixed (no reference to it in the change log). But I did find a workaround for anyone who's interested:
>perl -e 'use CGI; print $CGI::VERSION;'
3.15
>perl -e "use CGI; print CGI::start_form({enctype=>'test'});" # Seems
+broken
<form method="post" action="" enctype="multipart/form-data" enctype="t
+est">
>perl -e "use CGI ( -no_xhtml ); print CGI::start_form({enctype=>'test
+'});" # A non-ideal solution
<form method="post" action="" enctype="test">
>perl -e "use CGI; print CGI::startform({enctype=>'test'});" # Don't k
+now why it works, but it does...
<form method="post" action="" enctype="test">
Note that startform() is documented as an alias of start_form(), and the source code does seem to support that.
I also got the same results with v3.11