our @textfields = qw/Name Address City State Zipcode Phone Email/; sub make_form { my $page = shift () or die "no CGI object in make_form"; my $table = new HTML::Table ( -cols => 2 ); $table->addRow ( $page->strong ( 'Your Picture:' ), $page->filefield ( 'picture' ) ); $table->addRow ( $page->strong ( 'Order Type' ), $page->radio_group ( -name => 'order_type', -values => [ 'button', 'magnet' ], -rows => 1, -columns => 2, ) ); $table->addRow ( $page->strong ( $_ ), $page->textfield ( $_ ) ) foreach @textfields; my $form = $page->start_form ( -enctype => 'multipart/form-data' ) . $table . $page->p . $page->submit ( 'place_order', 'Submit Order' ) . $page->end_form; return $form; } sub upload_picture { my $page = shift () or die "no page in upload_picture"; my $prefix = shift () or die "no prefix in upload_picture"; my $fh = $page->upload ( 'picture' ) or die "can't upload picture!"; my $img_fname = (split ( /\/|\\/, $page->param ( 'picture' ) ) )[-1]; $img_fname = $prefix . "_" . $img_fname; open ( my $out_fh, '>', $img_fname ) or die "can't open output file in upload_picture: $!"; print $out_fh $_ while (<$fh>); close $out_fh or die "can't close output in upload_picture"; return $img_fname; }