Yes, that's fine. Combining a form plus its handler in one script/URL is not atypical and it gives an easy way for you redisplay the form in the handler if the user's inputs are in some way invalid.
One more thing I would recommend is to look at a templating system. This is another thing that you might consider overkill just now but will pay off handsomely in the long run. I tend to use Template and other folks swear by HTML::Template and there are a host more to choose from too. The point is to separate the rendering of the output from the logic of the application and to allow for easy re-use of that output in terms of common page layout, error handling, etc.
Good luck with your project!