in reply to Problem with subroutines

Perl doesn't have named parameters for subroutines in the manner you are attempting. You need to grab your parameters from the @_ array within the subroutine definition.

sub textfield { my($name, $size, $value) = @_; print qq(<input type="text" name="$name" size="$size" value="$value +">); }

What you have done is provided a malformed prototype, which perl would have told you about if you hadn't also disabled prototypes on your subroutine call by using the & prefix in the call.